我正在使用带有 C++ 的 MySQL C API 连接到数据库。我想从数据库中选择一些数字。
有没有办法直接将 INTEGER 或 DOUBLE 等数字类型提取到 int 或 double 等原生 C 类型中,而无需从字符串中解析它们?
编辑:枚举呢?我讨厌每次都做一个 strcmp 而不是使用 switch。
我正在使用带有 C++ 的 MySQL C API 连接到数据库。我想从数据库中选择一些数字。
有没有办法直接将 INTEGER 或 DOUBLE 等数字类型提取到 int 或 double 等原生 C 类型中,而无需从字符串中解析它们?
编辑:枚举呢?我讨厌每次都做一个 strcmp 而不是使用 switch。
谢谢,但实际上我想我只是在寻找不同的东西时找到了一种方法......
准备好的语句可以完成这项工作。选择数据时,结果存储在 MYSQL_BIND 中,就像准备好的语句参数一样。而在 MYSQL_BIND 中,这些值存储为原生 C 类型。我认为这些链接很有帮助:
http://lgallardo.com/en/2011/06/23/sentencias-preparadas-de-mysql-en-c-ejemlo-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;
}
对于双打,使用 strtod() 之类的东西从 char * 转换。(这也会检查非数字)