第一篇文章很适合我。我试图实现一部分mysql C API来检索一个已知字段,它将是一个TINYINT值(布尔值,1或0)如何访问指向数组的指针中的第一个元素
mysql C API提供了一个类型,它是一个指向数组MYSQL_ROW行的指针;其中数组的元素通过行[i]进行访问,其中i是索引。无论数据库中的数据类型如何,元素都以字符串形式返回。
我试图访问的字段显然是布尔值,如果查询找到该字段,它将为1或0。我想对这个字段的值进行逻辑检查,但是我正在努力处理类型。我试图将行[我]投到一个int,但没有好,我似乎得到指针返回。我知道C没有本地布尔类型,但可以实现。任何想法也将受到欢迎。这里是我的代码,提前很多感谢保罗 -
void process_result_set (MYSQL *conn, MYSQL_RES *res_set) {
MYSQL_ROW row;
unsigned int i;
unsigned int logonstatus;
while ((row = mysql_fetch_row (res_set)) != NULL)
{
for (i = 0; i < mysql_num_fields (res_set); i++)
{
logonstatus = (int)(row[i]); // gives an int return but appears to return a memory location i.e. a pointer
printf("The value of logon status is: %d\n", logonstatus);
printf("\nThe value of the logon field is:%s\n", row[i]);
}
}
if (mysql_errno (conn) != 0)
print_error (conn, "mysql_fetch_row() failed");
else
printf ("%lu rows returned\n",(unsigned long) mysql_num_rows (res_set));
}
在回答你的问题,是的是它的指针,这对于该特定领域只有一个元素将永远存在的数组并将被设置为1或0,或者该字段最初不会从我正在运行的查询中出现。
2 printf语句做同样的事情,一个传递一个int,另一个是字符串,这是使用mysql api时数据从数据库返回的方式。
很多感谢您的帮助。
即我正的输出如下所示:
(~/museuminfo) localhost $ ./museumDB
Connecting to MySQL Server...
Connection Successful
The SELECT statement you have built is: SELECT logon_status FROM users WHERE userpin='2468'
The value of logon status is: 146753048
The value of the logon field is:1
1 rows returned
工作..辉煌......感谢您的帮助:) – TitaniumBoy
很高兴我能帮上忙。顺便说一句,'atoi'函数带有'atof'这样的亲戚,所以如果你需要转换其他数据类型的其他字段,你可以使用它们。如果它对你有帮助,你也可以接受我的答案吗?谢谢, – Cristik