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));
根据错误类型,用户可以自己确定下一步操作。