c++鏈接mysql(vs2015)

第一次弄,不是很懂,把今天做的記錄下來供以後查閱。


1.建立一個控制檯項目。
2.指定包含頭文件路徑:
Project->properties->C/C++->Additional Include Directories->(這裏指定mysql各種頭文件的目錄,我的是mysql文件夾裏的include)
3.指定lib路徑:
Project->properties->Linker->General->Additional Library Directories->(這裏是libmysql.lib所在路徑,我的是在lib裏)
4.添加lib:
Project->properties->Linker->Input->Additional Dependencies->增加libmysql.lib
5.修改配置:
Build->Configuration Manager->Active solution platform->x64
(爲了避免模塊計算機類型x64與目標計算機類型x86衝突

更新:
因爲基本都是在win32平臺開發。所以去官網下載了win32(x86)版本可用的mysql,因爲我本來安裝了x64版本的,所以無需再次安裝了,解壓後找到lib和dll文件替換原來的即可。以下代碼vs2015編譯可通過。


這裏只用一個main.cpp做了簡單的demo:

#pragma comment(lib,"libmysql.lib")
#pragma comment(lib, "ws2_32.lib")
#include "stdafx.h"
#include <winsock.h>
#include "mysql.h"
#include <iostream>
#include <stdlib.h>


int main()
{
    MYSQL mydata;
    //初始化
    if (0 == mysql_library_init(0,NULL,NULL)){
        std::cout << "mysql_library_init() succeed" << std::endl;
    }
    else {
        std::cout << "mysql_library_init() failed" << std::endl;
    }
    if (NULL != mysql_init(&mydata)){
        std::cout << "mysql_init(mydata) succeed" << std::endl;
    }
    else {
        std::cout << "mysql_init(mydata) failed" << std::endl;
        return -1;
    }
    //處理中文
    if (0 == mysql_options(&mydata, MYSQL_SET_CHARSET_NAME, "gbk")) {
        std::cout << "mysql_options() succeed" << std::endl;
    }
    else {
        std::cout << "mysql_options() failed" << std::endl;
    }
    //連接數據庫
    if (NULL!=mysql_real_connect(&mydata,"localhost","","","test",3306,NULL,0)) {
        std::cout << "mysql_real_connect() succeed" << std::endl;
    }
    else {
        std::cout << "mysql_real_connect() failed" << std::endl;
        return -1;
    }
    std::string sqlstr;
    //建表
    sqlstr = "CREATE TABLE IF NOT EXISTS new_paper(";
    sqlstr += "NewID int(11) NOT NULL AUTO_INCREMENT,";
    sqlstr += "NewCaption varchar(40) NOT NULL,";
    sqlstr += "NewContent text,";
    sqlstr += "NewTime datetime DEFAULT NULL,";
    sqlstr += "PRIMARY KEY(NewID)";
    sqlstr+=")ENGINE = InnoDB DEFAULT CHARSET = utf8"
    ;
    if (0 == mysql_query(&mydata,sqlstr.c_str())) {
        std::cout << "mysql_query() create table succeed" << std::endl;
    }
    else {
        std::cout << "mysql_query() create table failed" << std::endl;
        mysql_close(&mydata);
        return -1;
    }
    //插入數據
    for (int i = 0; i < 5; i++){
        sqlstr = "INSERT INTO test.new_paper(NewID,NewCaption,NewContent,NewTime)";
        sqlstr += "VALUES(default,'小明','吃了兩個西瓜','2017-01-11');";
        if (0 == mysql_query(&mydata, sqlstr.c_str())) {
            std::cout << "mysql_query() insert data succeed" << std::endl;
        }
        else {
            std::cout << "mysql_query() insert data failed" << std::endl;
            mysql_close(&mydata);
            return -1;
        }
    }
    //顯示數據
    sqlstr = "SELECT NewID,NewCaption,NewContent,NewTime FROM test.new_paper";
    MYSQL_RES *result = NULL;
    if (0 == mysql_query(&mydata, sqlstr.c_str())) {
        std::cout << "mysql_query() select data succeed" << std::endl;
        result = mysql_store_result(&mydata);
        int rowcount = mysql_num_rows(result);
        std::cout << "row count:" << rowcount << std::endl;

        unsigned int fieldcount = mysql_num_fields(result);
        MYSQL_FIELD *field = NULL;
        for (unsigned int i= 0; i < fieldcount;i++) {
            field = mysql_fetch_field_direct(result,i);
            std::cout << field->name << "\t\t";
        }
        std::cout << std::endl;

        MYSQL_ROW row = NULL;
        row = mysql_fetch_row(result);
        while(NULL!=row) {
            for (int i = 0; i < fieldcount;i++) {
                std::cout << row[i] << "\t\t";
            }
            std::cout << std::endl;
            row = mysql_fetch_row(result);
        }
    }
    else {
        std::cout << "mysql_query() select data failed" << std::endl;
        mysql_close(&mydata);
        return -1;
    }
    //刪除表
    sqlstr = "DROP TABLE test.new_paper";
    if (0 == mysql_query(&mydata, sqlstr.c_str())) {
        std::cout << "mysql_query() drop table succeed" << std::endl;
    }
    else {
        std::cout << "mysql_query() drop table failed" << std::endl;
        mysql_close(&mydata);
        return -1;
    }
    mysql_free_result(result);
    mysql_close(&mydata);
    mysql_server_end();
    /*我做的時候是一塊一塊編譯的,怕哪裏出錯,後面的暫停和輸入都是爲了看錯誤*/
    system("pause");
    char k;
    std::cin >> k;
    return 0;
}

> 代碼參考:http://blog.csdn.net/ggz631047367/article/details/48157473
> 配置參考:
http://www.cnblogs.com/justinzhang/archive/2011/09/23/2185963.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章