データベースに接続するために C++ で MySQL C API を使用しています。データベースからいくつかの数字を選択してください。
文字列から解析することなく、INTEGER や DOUBLE などの数値型を int や double などのネイティブ C 型に直接フェッチする方法はありますか?
編集:ENUMはどうですか? スイッチを使用する代わりに、毎回 strcmp を実行するのは嫌いです。
データベースに接続するために C++ で MySQL C API を使用しています。データベースからいくつかの数字を選択してください。
文字列から解析することなく、INTEGER や DOUBLE などの数値型を int や double などのネイティブ C 型に直接フェッチする方法はありますか?
編集:ENUMはどうですか? スイッチを使用する代わりに、毎回 strcmp を実行するのは嫌いです。
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
私はそうは思いません - 私が知る限り、すべてが char * として返されます。これはあなた次第です。
列挙型に関連する値をフェッチする場合は、次を使用します
int res = atoi(row[0])
それから
switch(res)
{
case ENUM_VAL_1:
break;
}
double の場合は、strtod() などを使用して char * から変換します。(これは非数値もチェックします)