第一篇文章很適合我。我試圖實現一部分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