我在C中使用ADODB连接。代码的工作方式或多或少都很好但是当我的查询没有结果而我尝试阅读时会遇到错误。相关代码:
__object *con, *rec;
con = __object_create("ADODB.Connection");
if(con!=NULL) con->Open("odbc name");
if (con == NULL || con->State==0)
{
return 0;
}
rec= __object_create("ADODB.RecordSet");
sprintf(query, "SELECT SUM(column) FROM table WHERE %s", constraint);
rec->CursorLocation=3;
rec->Open(query, con, 1, 3);
float result = rec->Fields(0); // <- Error here
rec->Close();
__object_delete(rec);
__object_delete(con);
我收到错误代码80020005(类型不匹配)。 DB列是float类型。当有记录符合约束条件并得到结果时,一切正常。但是当它匹配没有记录时,DB服务器返回null并且我得到错误。幸运的是,结果设置为0,这是合理的,但我想更好地检测到这一点。
标准方式(BOF / EOF,Fields-&gt; Count,== NULL,...)都失败了。我能找到的大多数代码示例都是针对VB而不是C,因此它们并没有真正帮助。
答案 0 :(得分:1)
rec->Fields(0).Value
在分配给float变量之前返回一个变量,检查变量是否表示VT_NULL,表明返回的数据是NULL。