打印本文 打印本文 关闭窗口 关闭窗口
详细的MySQL C API [转]
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3434  更新时间:2009/4/22 20:49:07  文章录入:mintao  责任编辑:mintao
MYSQL *mysql)

第二中形式在MySQL 3.22.24或更新版本上不能工作。为了传递一个MYSQL* 参数,你必须使用unsigned int mysql_field_count(MYSQL *mysql)。

20.4.35.1 说明
在结果集合中返回列的数量。

注意,你也可以通过一个指向一个结果集合或一个连接句柄的指针获得列的数量。如果mysql_store_result()或mysql_user_result()返回NULL,你将使用连接句柄(而这样你没有结果集合指针)。在这种情况下,你可以调用mysql_field_count()确定mysql_store_result()是否应该产生非空的结果。这允许客户程序采取成正确的行动,不必知道查询是否是一个SELECT(或类SELECT)语句。下面被显示出的例子说明这怎么可以被做。

见20.4.51 为什么在mysql_query()返回成功后,mysql_store_result()有时返回NULL?。

20.4.35.2 返回值
表示一个结果集合中字段数量的一个无符号整数。

20.4.35.3 错误
无。

20.4.35.4 范例
MYSQL_RES *result;
unsigned int num_fields;
unsigned int num_rows;

if (mysql_query(&mysql,query_string))
{
   // error
}
else // query succeeded, process any data returned by it
{
   result = mysql_store_result(&mysql);
   if (result)  // there are rows
   {
       num_fields = mysql_num_fields(result);
       // retrieve rows, then call mysql_free_result(result)
   }
   else  // mysql_store_result() returned nothing; should it have?
   {
       if (mysql_errno(&mysql))
{
          fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
}
       else if (mysql_field_count(&mysql) == 0)
       {
           // query does not return data
           // (it was not a SELECT)
           num_rows = mysql_affected_rows(&mysql);
       }
   }
}

另一个选择(如果你知道你查询应该返回了一个结果结合)是用mysql_field_count(&mysql) = 0的一个检查来代替mysql_errno(&mysql)。这只会发生在出错了的情形。


20.4.36 mysql_num_rows()
my_ulonglong mysql_num_rows(MYSQL_RES *result)

20.4.36.1 说明
在结果集合中返回行的数量。

mysql_num_rows()的使用取决于你是否使用mysql_store_result()或mysql_use_result()返回一个结果集合。如果你使用mysql_store_result(),mysql_num_rows()可以马上被调用。如果你使用mysql_use_result(),mysql_num_rows()将不会返回正确的值,直到在结果集合中的所有行均被检索了。

20.4.36.2 返回值
在结果集合中行的数量。

20.4.36.3 错误
无。

20.4.37 mysql_options()
int mysql_options(MYSQL *mysql, enum mysql_option option, const char *arg)

20.4.37.1 说明
能用于设置额外连接选项并且影响一个连接的行为。这个函数可以被多次调用来设置多个选项。

mysql_options()应该在mysql_init()之后和mysql_connect()或mysql_real_connect()之前调用。

option参数是你想要设置的选项;arg参数是选项的值。如果选项是一个整数,那么arg应该指向整数值。

可能的选项值:

选项  参数类型  功能  
MYSQL_OPT_CONNECT_TIMEOUT  unsigned int *  以秒计的连接超时。  
MYSQL_OPT_COMPRESS  不使用 使用压缩的客户机/服务器协议。  
MYSQL_OPT_NAMED_PIPE  不使用 使用命名管道连接一个在NT上的MySQL服务器。  
MYSQL_INIT_COMMAND  char *  当连接MySQL服务器时执行的命令。当重新连接时,将自动重新执行。  
MYSQL_READ_DEFAULT_FILE  char *  从命名的选项文件而不是从“my.cnf”读取选项。
MYSQL_READ_DEFAULT_GROUP  char *  从“my.cnf”或用MYSQL_READ_DEFAULT_FILE指定的文件中的命名组中读取选项。

注意,如果你使用MYSQL_READ_DEFAULT_FILE或MYSQL_READ_DEFAULT_GROUP,总是读取client。

在选项文件中指定的组可能包含下列选项:

compress  使用压缩的客户机/服务器协议。  
database  如果在连接命令中没有指定数据库,使用这个数据库。
debug  调试选项
host  缺省主机名
init-command  在连接MySQL服务器时,执行的命令。当重新连接时,将自动重新执行。  
password  缺省口令
pipe  使用命名管道连接一个在NT上的MySQL服务器。  
port  缺省端口号
return-found-rows  告诉mysql_info()返回找到的行,而不是在使用UPDATE时,返回更新的行。  
socket  缺省套接字号
timeout  以秒计的连接超时。  
user  缺省用户


上一页  [1] [2] [3] [4] 

打印本文 打印本文 关闭窗口 关闭窗口