博客日历
2025年01月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
30 | 31 | 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 | 1 | 2 |
存档
2024年03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
MySQL C API的简单应用
#include <stdio.h>
#include <WinSock2.h> //仅windows下
#include <mysql.h>
#pragma comment(lib,"libmysql.lib") //unix下可静态链接libmysqlclient.a
int main(int argc, char* argv[], char* envp[])
{
//调用mysql_library_init()和mysql_library_end()的目的在于,为MySQL库提供恰当的初始化和结束处理。
mysql_library_init(NULL,NULL,NULL);
//分配或初始化与mysql_real_connect()相适应的MYSQL对象。
MYSQL mysql;
mysql_init(&mysql);
//尝试与运行在主机上的MySQL数据库引擎建立连接。
//在你能够执行需要有效MySQL连接句柄结构的任何其他API函数之前,mysql_real_connect()必须成功完成。
if (!mysql_real_connect(&mysql, "localhost", "root", "chuangke","test_mysql_db",3306,NULL,NULL))
{
fprintf(stderr,"%s",mysql_error(&mysql));
exit(1);
}
//该函数用于为当前连接设置默认的字符集。
if (mysql_set_character_set(&mysql,"gbk"))
{
fprintf(stderr,"%s",mysql_error(&mysql));
exit(1);
}
//如果模式为“1”,启用autocommit模式;如果模式为“0”,禁止autocommit模式。
mysql_autocommit(&mysql,0);
//执行由“Null终结的字符串”查询指向的SQL查询。
//mysql_query()不能用于包含二进制数据的查询,应使用mysql_real_query()取而代之
//(二进制数据可能包含字符‘\0’,mysql_query()会将该字符解释为查询字符串结束)。
if (mysql_query(&mysql,"insert into `Users`(`username`,`password`)values('王五','abc123')"))
{
fprintf(stderr,"%s",mysql_error(&mysql));
exit(1);
}
//回滚当前事务。
mysql_rollback(&mysql);
//提交当前事务。
//mysql_commit(&mysql);
if (mysql_query(&mysql,"select * from `Users`"))
{
fprintf(stderr,"%s",mysql_error(&mysql));
exit(1);
}
//检索完整的结果集至客户端。
MYSQL_RES *rs=mysql_store_result(&mysql);
if (rs==NULL)
{
fprintf(stderr,"%s",mysql_error(&mysql));
exit(1);
}
//返回结果集中的行数。
printf("found %u rows.\n",mysql_num_rows(rs));
//从结果集中获取下一行
MYSQL_ROW row;
while( (row=mysql_fetch_row(rs))!=NULL )
{
printf("%s,%s,%s\n",row[0],row[1],row[2]);
}
//释放结果集使用的内存。
mysql_free_result(rs);
//关闭前面打开的连接。
mysql_close(&mysql);
mysql_library_end();
return 0;
}
上一篇: 标准输入,标准输出,标准错误输出与重定向,管道
下一篇: 用GFlags解决Visual C++无法定位的内存非法访问问题
分类:数据库 查看次数:9112 发布时间:2010/8/1 20:23:16