在SQL Server数据库表中存储ttreeview
我正在尝试通过使用下一个过程来存储我的ttreeview
在SQL Server数据库表中:
procedure Save;
var
BlobField :TBlobField;
Query:TADOQuery;
Stream:TStream;
begin
Stream := TMemoryStream.Create;
Query := TADOQuery.Create(Self);
Query.SQL.Add('Select * From MyTable') ;
Query.Active := True;
Query.First;
Query.Edit;
BlobField := Query.FieldByName('MyTableField') as TBlobField;
Stream := Query.CreateBlobStream(BlobField, bmWrite);
TreeView1.SaveToStream(Stream);
Query.Refresh;
Query.Free;
Stream.Free;
end;
但是每次我收到错误时:DataSet不在编辑或插入模式
中。
我正在使用Delphi 10.1,Win 10,SQL Server 2019。
Am trying to store my TTreeView
inside SQL Server database table by using the next procedure:
procedure Save;
var
BlobField :TBlobField;
Query:TADOQuery;
Stream:TStream;
begin
Stream := TMemoryStream.Create;
Query := TADOQuery.Create(Self);
Query.SQL.Add('Select * From MyTable') ;
Query.Active := True;
Query.First;
Query.Edit;
BlobField := Query.FieldByName('MyTableField') as TBlobField;
Stream := Query.CreateBlobStream(BlobField, bmWrite);
TreeView1.SaveToStream(Stream);
Query.Refresh;
Query.Free;
Stream.Free;
end;
But every time I am getting the error: DataSet is not in edit or insert mode
.
I'm using Delphi 10.1, Win 10, SQL server 2019.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
更改
query.refresh;
toquery.post;
另外,您需要
免费
blob流才能在blob字段中敲定写作,然后再进行blob字段。发布
将新数据提交到数据库中。另外,您正在泄露未使用的
tmemorystream
对象。尝试以下操作:
Change
Query.Refresh;
toQuery.Post;
Also, you need to
Free
the blob stream to finalize writing to the blob field before you thenPost
to commit the new data into the DB.Also, you are leaking an unused
TMemoryStream
object.Try this: