首先,环境是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");
//设置数据库
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
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", 0, NULL, 0)) { 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 |