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