2

データベースに接続するために C++ で MySQL C API を使用しています。データベースからいくつかの数字を選択してください。

文字列から解析することなく、INTEGER や DOUBLE などの数値型を int や double などのネイティブ C 型に直接フェッチする方法はありますか?

編集:ENUMはどうですか? スイッチを使用する代わりに、毎回 strcmp を実行するのは嫌いです。

4

2 に答える 2

4

Thank you, but actually I think I just found a way while looking for something different...

Prepared statements can do the job. When selecting data the results are stored in a MYSQL_BIND, just like the prepared statement arguments. And in MYSQL_BIND the values are stored as native C types. I think these links are helpful:

http://lgallardo.com/en/2011/06/23/sentencias-preparadas-de-mysql-en-c-ejemplo-completo/ http://dev.mysql.com/doc/refman/5.5/en/mysql-stmt-fetch.html#id1363684

于 2012-03-23T10:42:03.167 に答える
0

私はそうは思いません - 私が知る限り、すべてが char * として返されます。これはあなた次第です。

列挙型に関連する値をフェッチする場合は、次を使用します

int res = atoi(row[0])

それから

switch(res)
{
case ENUM_VAL_1:
break;
}

double の場合は、strtod() などを使用して char * から変換します。(これは非数値もチェックします)

于 2012-03-21T23:18:58.723 に答える