Mysql数据库学习(四):常用Mysql C API 介绍和使用、封装一个访问Mysql数据库的类MysqlDB

在Windows环境下,通过VS2008进行Mysql数据库的C API学习,首先需要配置工程属性,包括添加Mysql的头文件和库文件路径。文章介绍了常用API如`mysql_init`的使用,并且展示了一个访问Mysql数据库的类`MysqlDB`的封装过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


首先,环境是windows +  vs2008,Mysql数据库已经安装好,在使用之前,需要配置工程属性,附加包含目录添加

D:\Program Files\MySQL\MySQL Server 5.6\include (Mysql安装目录),附加库目录添加 D:\Program Files\MySQL\MySQL Server 5.6\lib   ,附加依赖项添加 mysqlib.lib,当然mysqllib.lib 只是包含符号而已,可执行文件运行的时候需要mysqllib.dll(lib目录下), 将其拷贝到exe同目录下。


一、常用Mysql C API 介绍和使用

1.mysql_init

MYSQL结构代表一个连接句柄
MYSQL*mysql_init(MYSQL*mysql);
如果mysql是NULL指针,该函数将分配、初始化、并返回新对象。否则,将初始化对象,并返回对象的地址。如果mysql_init()分配了新的对象,当调用mysql_close()来关闭连接时。将释放该对象。

2.mysql_real_connect

// 连接数据库
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag) 

//设置数据库
my_bool reconnect = true;
mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "gbk");

3.mysql_query

int mysql_query(MYSQL *mysql, const char *query)
mysql_affected_rows
mysql_store_result
mysql_num_fields
mysql_num_rows
mysql_fetch_field
mysql_fetch_row
mysql_free_result

示例代码如下:

 C++ Code 
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74

#include <Windows.h>
#include <mysql.h>
#include <stdio.h>

int main( void)
{
     //初始化一个连接句柄
    MYSQL* mysql = mysql_init( NULL);
     if (mysql ==  NULL)
    {
        printf( "error:%s", mysql_error(mysql));
         return  1;
    }
    
    my_bool reconnect =  true;
    mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
    mysql_options(mysql, MYSQL_SET_CHARSET_NAME,  "gbk");

     if (!mysql_real_connect(mysql,  "localhost""root""123456",
         "scott"0NULL0))
    {
        printf( "error:%s", mysql_error(mysql));
         return  1;
    }

     // 没有返回结果集的操作
     int result;
    result = mysql_query(mysql,  "insert into emp values(8888, 'YYYY', 'CLERK', 7782, '1990-04-10', 1500, NULL, 50);");
     if (result !=  0)
    {
        printf( "error:%s", mysql_error(mysql));
         return  1;
    }
    printf( "%llu 行受影响\n", mysql_affected_rows(mysql));
    
     // 有返回结果集的操作
    result = mysql_query(mysql,  "select * from emp where deptno=30;");
     if (result 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值