2012-10-25 72 views
2

我使用的是Delphi 7,我有一個名爲Table_1的表,它有兩個字段,分別是IMageCode Varchar(50),ActImage [Blob in Oracle, VarBinary(Max) in SQL Server],它有四個記錄插入,包括圖像和各自的圖像代碼。TADOQuery不返回任何記錄

當我在Oracle中編寫SQL如下:

Select * from Table_1 where Upper(ImageCode) ='SUNSET' 

TADOQuery不返回任何記錄,當我檢查TADOQuery.RecordCount它顯示0,當我嘗試看看TADOQuery.IsEmpty它說True。然後同樣的查詢,當我在Oracle編輯器中執行時,它會按預期返回一條記錄,但在delphi中,TADOQuery不會返回任何記錄。

但是,當我寫以下簡單的SQL針對Oracle數據庫,則返回所有四個使用TADOQuery記錄:

Select * from Table_1 

我沒有發現任何問題,在SQL Server數據庫中,上面用TADOQuery的討論。

ADOConnection.Connected := False; 
ADOConnection.LoginPrompt := False; 
ADOConnection.ConnectionString := <Connection String>; 
ADOConnection.Connected := True; 
ADOQuery1.Connection := ADOConnection; 
with ADOQuery1 do begin 
    Active := False; 
    SQL.Clear; 
    //SqL.Add('Select * from Table_1 where Upper(ImageCode) = ' + QuotedStr(Uppercase(Trim(edtImageCode.Text)))); 
    SqL.Add('Select * from Table_1 where Upper(ImageCode) = ''SUNSET'''); 
    Active := True; 
end; 

有沒有人可以把重點放在什麼可能是問題?

+0

ADOConnection.Connected:= False; ADOConnection.LoginPrompt:= False; ADOConnection.ConnectionString:= <連接字符串>; ADOConnection.Connected:= True; ADOQuery1.Connection:= ADOConnection; with ADOQuery1 do begin Active:= False; SQL.Clear; //SqL.Add('Select * from Table_1 where Upper(ImageCode)='+ QuotedStr(Uppercase(Trim(edtImageCode.Text)))); ('Select * from Table_1 where Upper(ImageCode)=''SUNSET'''); Active:= True; 結束; –

+0

我試過Ctrl + K,但格式不變,反正我會記住這一點。謝謝。 –

+0

您可能正在使用的用於ADO的Microsoft Win32 Oracle驅動程序不支持blob,這可能是此失敗的原因。如果您在字段列表中只指定了「IMageCode」而不是「*」字段,您會得到一條記錄嗎? – GolezTrol

回答

0

問題已解決,我試圖將「ImageCode」作爲主鍵,現在TADOQuery正在按照預期返回peroper記錄計數,即1。以前沒有主鍵,但是,如果有主鍵或者沒有主鍵,TADOQuery應該返回所需的數據集。

任何猜測?

相關問題