我使用的是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;
有沒有人可以把重點放在什麼可能是問題?
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; 結束; –
我試過Ctrl + K,但格式不變,反正我會記住這一點。謝謝。 –
您可能正在使用的用於ADO的Microsoft Win32 Oracle驅動程序不支持blob,這可能是此失敗的原因。如果您在字段列表中只指定了「IMageCode」而不是「*」字段,您會得到一條記錄嗎? – GolezTrol