ubuntu上c++使用mysql接口调用数据库

c++ 连接mysql有两种方法,一种是通过odbc调用,另一种是通过mysql提供的c api进行调用

我才不是把两种方法搞混了稀里糊涂装了odbc却抄的mysql c api的代码呢

参考: Linux下C++访问MySQL数据库

首先要安装libmysql++库:

1
sudo apt-get install libmysql++-dev

代码示例:

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
#include <iostream>
#include <mysql/mysql.h>
#include <cstdlib>
using namespace std;
int main(int argc, char const *argv[])
{
MYSQL mysql;
mysql_init(&mysql);
// 函数mysql_real_connect建立一个数据库连接
mysql = *mysql_real_connect(&mysql, "127.0.0.1", "root", "root", "blhxbot", 0, NULL, 0);
// mysql_query()执行成功返回0,失败返回非0值
mysql_query(&mysql, "show tables");
MYSQL_RES *result;
// 获取结果集
result = mysql_store_result(&mysql);
// mysql_num_fields()返回结果集中的字段数
while(MYSQL_ROW row = mysql_fetch_row(result))
{
for (int j = 0; j < mysql_num_fields(result); j++)
{
cout << row[j]<<" ";
}
cout << endl;
}
mysql_close(&mysql);
return 0;
}

原文 Linux下C++访问MySQL数据库中,mysql_field_count表示的是列数,而mysql_fetch_row取出的一整行,包括所有列,故mysql_field_count不能作为循环的指标。使用while循环可取出每一行。

注:g++编译时要链接库,否则会报错

1
2
g++ new_cpp.cpp -o new_cpp -lmysqlclient
./new_cpp