c++链接mysql
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冲突
)
这里只用一个main.cpp做了简单的demo:
#pragma comment(lib,"libmysql.lib")#pragma comment(lib, "ws2_32.lib")#include "stdafx.h"#include#include "mysql.h"#include #include 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;}