C에서 ADODB 연결을 사용하고 있습니다.이 코드는 더 많거나 적은 문제가 없지만 쿼리에 대한 결과가 없으면 읽는 중 오류가 발생합니다. 관련 코드 :adodb select 쿼리에서 아무런 결과도 검색하지 않습니다.
__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, 필드 -> 개수, == NULL, ...) 모두 실패합니다. 내가 찾을 수있는 대부분의 코드 샘플은 VB가 아니기 때문에 C가 아니므로 실제로 도움이되지 않습니다.