Linux下C++连接Mysql

前言

在连接MySQL之前,确保系统安装了MySQL,并且安装了对应的库文件。可以到官网下载不同版本的MySQL(自行编译安装)传送门>>具体安装方法不再多说

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <mysql/mysql.h>
void connMYSQL(){
//mysql_server_init(NULL,NULL,NULL);
MYSQL mysql;
mysql_init(&mysql);
//设置字符集 方法1
int r=mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,"utf8");
if(r==0){
printf("设置字符集 utf8 ok\n");
}
//连接mysql
MYSQL *m= mysql_real_connect(&mysql, "127.0.0.1","root","123456","db_0", 3306,0,0);
if(!m){
unsigned int errorCode=mysql_errno(&mysql);
const char *errorString=mysql_error(&mysql);
printf("连接数据库失败 : %s\n",errorString);
}
//设置字符集 方法2
mysql_query(&mysql,"set names 'utf8';");
mysql_query(&mysql,"select *from tb_0;");
//获取资源结果集
MYSQL_RES *result=mysql_store_result(&mysql);
//返回查询受影响的行
int affectedRows=mysql_affected_rows(&mysql);
printf("affected rows: %d \n",affectedRows);
//获取记录数
int rowcount=mysql_num_rows(result);
//获取字段数
int fieldcount=mysql_num_fields(result);
printf("rowCount:%d fieldCount:%d \n",rowcount,fieldcount);
MYSQL_FIELD *field=NULL;
//遍历字段
while (field=mysql_fetch_field(result)){
std::cout<<"-->"<<field->name<<std::endl;
}
//field= mysql_fetch_field_direct(result,0);
//field= mysql_fetch_field_direct(result,1);
printf("——————————————————————————————\n");
//char ** = MYSQL_ROW
MYSQL_ROW row=NULL;
//遍历行
while(row=mysql_fetch_row(result)){
printf("%s\t%s\t%s\t%s\t%s\n",row[0],row[1],row[2],row[3],row[4]);
}
printf("——————————————————————————————\n");
//释放结果集
mysql_free_result(result);
//关闭连接
mysql_close(&mysql);
//mysql_server_end();
//mysql_library_end();
}
int main() {
connMYSQL();
return 0;
}

由于我使用的是CLion,所以当我写出来的源文件是无法直接编译的,这时候可以在
**CMakeLists.txt **内添加 target_link_libraries(mysqlconn /usr/lib/libmysqlclient.so)
其中 mysqlconn 为项目名,/usr/lib/libmysqlclient.so 为库文件路径
如 /usr/lib/ 不存在 libmysqlclient.so 文件,那么可以用

locate libmysqlclient

找到系统内存在的 libmysqlclient库文件。
比如我的本来是 /usr/lib/x86_64-linux-gnu/libmysqlclient.so ,那么我就可以设置个软链接

ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.so /usr/lib/libmysqlclient.so

或者简单点也可以直接

g++ main.cpp -o test -lmysqlclient
./test