2
我想將TBitmap圖像的數組添加到ClientDataSet的不同記錄(在ftBlob字段中),然後將這些記錄保存到SQLite數據庫。 BLOB字段(DocImage)是數據庫中的必填字段。Delphi - 如何將位圖保存到SQLite數據庫中的BLOB字段
但是,我的代碼似乎沒有將位圖保存到ClientDataSet中的blob字段中......所以,當我調用BdmMain.cdsTrxDoc.ApplyUpdates(0)
時,出現錯誤:「字段'DocImage'必須有值。
我以前並呼籲FTrxPhotoValue[i].SaveToStream(BlobStream)
後檢查了我的BlobStream(BlobStream.Size)的大小和它在尺寸增加,但BlobField的數據大小保持爲0
下面是代碼片段:
FTrxIDValue: Integer;
FTrxDocIDValue: array of Integer;
FTrxPhotoValue: array of TBitmap;
// ...
for i := 0 to Length(FTrxPhotoValue) do
begin
BdmMain.cdsTrxDoc.Insert;
BdmMain.cdsTrxDoc['TrxID'] := FTrxIDValue;
BdmMain.cdsTrxDoc['DocID'] := FTrxDocIDValue[i];
BlobField := BdmMain.cdsTrxDoc.FieldByName('DocImage');
BlobStream := BdmMain.cdsTrxDoc.CreateBlobStream(BlobField, bmWrite);
FTrxPhotoValue[i].SaveToStream(BlobStream);
end;
// ...
BdmMain.cdsTrxDoc.ApplyUpdates(0);
我在SaveToStream調用後添加了BlobStream.Free,但現在出現訪問衝突錯誤... –
您能否顯示完整的代碼並標記訪問衝突行? –
迭代'for i:= 0到Length(FTrxPhotoValue)-1 do'。 – Victoria