Featured image of post C++连接到MariaDB数据库

C++连接到MariaDB数据库

提供了C++连接到MariaDB数据库的一种简单方法。也可以进行简单修改以适用于MySQL。

环境: Dev-C++ 5.11,GCC 4.9.2,MariaDB 10.6

配置步骤:

  1. 将MariaDB安装目录下的include与lib文件夹分别覆盖到编译选项中的包含文件与库目录。
  2. 在编译选项的连接器命令行加入以下命令:-lmariadb
  3. 将lib文件夹中的libmariadb.dll复制到源代码所在目录下。

连接与简单调试的源代码:

 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
#include <iostream>
#include <mysql/mysql.h>
using namespace std;

MYSQL *link;
MYSQL_RES *res;
MYSQL_ROW row;

int main(){
    /* 将终端当前代码页设置为UTF-8
         因为简体中文系统下Dev-C++默认编码为GBK且不可修改,故这样保证UTF-8数据库显示正确。
         也可以创建数据库时将编码方式设为GBK,则下面两行可以删去。 */
    system("chcp 65001");
    system("cls");

    /* 建立连接 */
    link = mysql_init(NULL);
    if(!mysql_real_connect(link, "localhost", "root", "YOUR_PASSWORD"/* 别忘了改成你的密码 */, "school"/* 数据库名字 */, 0, NULL, 0))
        fprintf(stderr, "%s\n", mysql_error(link));

    /* 查询数据库中表名并输出 */
    if(mysql_query(link, "SHOW TABLES;"))
        fprintf(stderr, "%s\n", mysql_error(link));
    res = mysql_use_result(link);
    cout<<"MySQL Tables in school database:"<<endl;
    while((row = mysql_fetch_row(res)) != NULL)
        cout<<row[0]<<endl;

    /* 执行查询并输出 */
    char sql[] = "SELECT sno, sname FROM student WHERE sno IN (SELECT sno FROM sc GROUP BY sno HAVING COUNT(*) >= 2);";
    mysql_query(link, sql);
    res = mysql_store_result(link);
    for(int i = 0; i < mysql_num_rows(res); i++){
        row = mysql_fetch_row(res);
        cout<<row[0]<<'\t'<<row[1]<<endl;
    }

    /* 释放结果并关闭连接 */
    mysql_free_result(res);
    mysql_close(link);

    return 0;
}

效果:

上述代码运行的结果

关于所用到函数的详细介绍,请自行查阅官方文档。