MySQL数据库C API(3)
来源:互联网 发布:mac小游戏推荐 编辑:程序博客网 时间:2024/05/01 07:18
1.用C语言编程访问MySQL数据库的步骤如下:
1>调用mysql_init()以初始化一个连接处理器;
2>调用mysql_real_connect()连接数据库,当然需要提供连接信息,比如主机、用户名、密码等;
3>调用mysql_query()或mysql_real_query(),将SQL语句发送到服务器。如果字符串包含二进制数据(它可以包括空字节),必须使用mysql_real_query()。对于每个非SELECT查询(例如INSERT、UPDATE、DELETE等),可以调用mysql_affected_rows()知道有多少行受到影响(改变);
4>调用mysql_close()关闭一个MySQL数据库连接。
2.用C语言编程访问MySQL的结果集:
对于SELECT查询,作为一个结果集合来检索选择的行。(注意,一些语句是类SELECT的,它们返回行。包括SHOW、DESCRIBE和EXPLAIN。它们应该以SELECT语句相同的方式来对待。)对客户,有两种方法处理结果集:
1>通过调用mysql_store_result()立刻检索全部结果。该函数从服务器获得查询返回的所有行将他们存储在客户端;
2>对客户通过调用mysql_use_result()初始化一个一行一行结果集合的检索。该函数初始化检索,但是实际上不从服务器获得任何行。
在两种情况中,通过mysql_fetch_row()存储行。用mysql_store_result()、mysql_fetch_row()存储已经从服务器被取出的行。用mysql_use_result()、mysql_fetch_row()实际上从服务器检索行。调用mysql_fetch_lengths()可获得关于每行种数据值尺寸的信息。
在用完一个结果集合以后,调用mysql_free_result释放由它使用的内存。两种检索机制是互补的。客户程序应该选择最适合他们的要求的途径。在实践中,客户通过更愿意使用mysql_store_result()。
mysql_store_result()的一个优点是:既然行全被客户取到,不仅能顺序存储行,也能利用mysql_data_seek或mysql_row_seek()在结果集合中前后移动以改变在结果集合中的当前行位置。也能通过调用mysql_num_rows()知道有多少行。而另一方面,mysql_store_result()对内存需求较大,结果集合可能很大,并且最可能遇到内存不足的情况。‘
mysql_use_result()的一个优点是:客户需要较少的内存,因为它一次只是维持一行(并且因为有较少的分配开销,mysql_use_result()能更快些。)缺点是必须尽快处理每一行以避免锁住服务器,不能在结果集合中随意存储行(只能顺序存储行),而且不知道在结果集合中有多少行,知道检索全部结果。还有,必须检索出所有行,即使在检索中途确定已找到了想寻找的信息。
3.用C语言编程访问MySQL的错误处理:
对于检测和报告错误,MySQL借助于mysql_errno()和mysql_error()函数提供错误信息的存取。它们返回最近调用的可能成功或失败的函数的错误代码或错误信息,让用户知道何时发生一个错误和什么错误。
查看错误的方法很简单:
fprintf(studrr,"Error code: %d, Error message: %s/n",mysql_errno(&mysql),mysql_error(&mysql));
根据错误类型,用户可以自己确定下一步操作。
- MySQL数据库C API(3)
- MySQL数据库C API(1)
- MySQL数据库C API(2)
- mysql数据库 c api(一)
- 使用C API操作mysql数据库
- 使用C API操作mysql数据库
- C++使用C API 连接MYSQL数据库
- C API 通过ODBC 连接数据库MYSQL
- C API 通过ODBC 连接数据库MYSQL
- 利用mysql的C API来操作mysql数据库
- 通过MySQL提供的C API访问MySQL数据库
- 通过MySQL C API界面(mysql自己提供的API方式访问mysql数据库)
- MySQL 5 C API 访问数据库例子程序
- Linux下用C语言API连接MySQL数据库
- Linux下用C语言API连接MySQL数据库
- MySQL 5 C API 访问数据库例子程序
- 基于C API的MySQL数据库多线程访问方法
- Linux下C语言API连接MySQL数据库编译选项
- C++/*注释*/正确的使用
- MyEclipse使用SQL Explorer访问MSSQL命名实例数据库
- QT+QTOPIA在linux上的移植 转
- 浅谈SaaS模式的软件平台成熟度
- [转]软件开发人员的能力模型
- MySQL数据库C API(3)
- Qt/Embedded嵌入式开发环境的建立 转
- OA指点ERP作战 集团发展协同信息化工具蓄力
- 关于控件赋值
- autorelease
- 总线技术介绍
- 企业拒绝SaaS作为核心应用平台?
- (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
- 在JSP中实现分页