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));

   根据错误类型,用户可以自己确定下一步操作。

原创粉丝点击