2011-03-14 43 views
0

我在C中使用ADODB連接。該代碼工作或多或少罰款,但我得到錯誤,當我的查詢沒有結果,我嘗試讀取它。相關代碼:檢測沒有結果在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(類型不匹配)。數據庫列是浮點型。當有記錄符合約束條件時,我得到的結果一切正常。但是,當它與沒有記錄匹配時,數據庫服務器將返回空值,並且出現錯誤。幸運的是結果設置爲0,這是合理的,但我想更好地檢測到這一點。

標準方式(BOF/EOF,Fields-> Count,== NULL,...)全部失敗。我能找到的大多數代碼示例都是針對VB的,而不是C,因此它們並沒有真正的幫助。

回答

1

rec->Fields(0).Value返回一個變體,在分配給float變量之前,檢查變體是否代表VT_NULL,它表示返回的數據是NULL。