Я использую соединение ADODB в C. Код работает более или менее нормально, но я получаю ошибки, когда нет результата для моего запроса, и я пытаюсь его прочитать.Соответствующий код:
__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 (несоответствие типов).Столбец БД имеет тип float.Когда есть записи, которые соответствуют ограничению, и я получаю результат, все работает отлично.Но когда он не соответствует ни одной записи, сервер БД возвращает ноль, и я получаю ошибку.К счастью, результат установлен в 0, что является разумным, но я хотел бы обнаружить это лучше.
Стандартные способы (BOF / EOF, Fields-> Count, == NULL, ...) все терпят неудачу.Большинство примеров кода, которые я могу найти, предназначены для VB, а не для C, поэтому они не очень полезны.