2012-01-24 85 views
3

我正在通過sql在Advantage數據庫服務器中搜索可能性,將一個字節流放到一個表中,因此稱爲blob文件。當我建立一個完整的數據庫,我這樣做是這樣的:使用sql語句將sql語句插入到數據庫中將blob文件插入到

TBlobField(BaseTable.FieldByName('BlobData')).LoadFromStream(BinaryStream); 

現在我想添加一個條目到我的數據庫,其中一個字段的「BlobData」。 我開始這樣的:

FADSQuery.SQL.Add('Insert Into '+DBName'+'(BlobData)'); 
TBlobField(FADSQuery.ParamByName('BlobData')).LoadFromStream(BinaryStream); 

但是,編譯器告訴我,它找不到BlobData領域:( 是它幾乎有權那樣做我不喜歡把裏面插入到語句?通過文件名的整個文件

預先感謝您

+2

「先進數據基本服務器「或」Advantage數據庫服務器「? –

+3

'「但編譯器告訴我它找不到BlobData」'。請不要爲我們「翻譯」錯誤信息。始終提供您收到的* exact *錯誤消息。即使錯誤信息不能告訴你,它可能會告訴別人。 –

+0

因此,它是Advantage數據庫服務器。 –

回答

13

嘗試類似的東西:

FADSQuery.SQL.Add('Insert Into '+DBName+'(BlobData) values (:BlobData)'); 
FADSQuery.ParamByName('BlobData').LoadFromStream(BinaryStream, ftBlob); 
+4

+1,用於爲命名參數建議語法並將錯誤地轉換爲'TBlobField'。 –

+0

非常感謝您的快速回答。這對我幫助很大。並通過包括blobtype工作:FADSQuery.ParamByName('BlobData')。LoadFromStream(BinaryStream,ftBlob); –

+1

@AndréDziurla:如果它解決了問題,將標記爲「Accepted」的答案會很好。 –