1

以下の MySQL クエリがあり、MySQL コンソールで実行すると正しい結果が表示されます。ただし、結果をCプログラムの変数に格納する方法がわかりません。

MySQL インターフェイスに入力するコードは次のとおりです。

mysql> SELECT id FROM Stations where name = 'AE0';

これはそれが返すものです:

+----+
| id |
+----+
|  1 |
+----+

上記の「1」の値を C プログラムの変数に格納する必要があります。MySQL クエリは、次のコードを使用して C プログラムから呼び出されます。

MYSQL_RES *result;
MYSQL_ROW row;
length=sprintf(query,"SELECT id FROM Stations where name ='AE0'");
myquery(conn,query,length);
result=mysql_store_result(conn);
row=mysql_fetch_row(result);

探している値が「結果」に格納されているかどうか、格納されているかどうかわかりません。どうすればそれを見つけて整数に保存できますか?

4

1 に答える 1

5

簡潔な答え:

int i = atoi(row[0]);

長い答え:

http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html

MYSQL_ROW を返します。次に、行を反復処理して各値を取得する必要があります。これらの値は文字列なので、 で int に変換する必要がありますatoi()atoi()これは、上記のリンクから恥知らずに盗まれた以下のコード (呼び出しを除く) で示されています。

MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;

num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result)))
{
   unsigned long *lengths;
   lengths = mysql_fetch_lengths(result);
   for(i = 0; i < num_fields; i++)
   {
       printf("[%.*s] ", (int) lengths[i],
              row[i] ? row[i] : "NULL");
   }
   printf("\n");
}
于 2013-07-03T15:22:04.703 に答える