用ADODataSet.SaveToFile在XML中保存了BLOB类型,然后用OleVariant取出,却无法插入到数据库中;300分求解? (200分)

  • 主题发起人 主题发起人 yanbo
  • 开始时间 开始时间
Y

yanbo

Unregistered / Unconfirmed
GUEST, unregistred user!
用ADODataSet.SaveToFile在XML中保存了BLOB类型,
然后用OleVariant取出,却无法插入到数据库中。
例:
XMLDOC.LoadFromFile('c:/blobtest.xml');
RecNode:=XMLDoc.DocumentElement.ChildNodes;
Value:=RecNode.Attributes['photo'];
下面该怎么进行呢?
Value:=DecodeString(Value);
StringStream:=TStringStream.Create(Value);
SQL:='INSERT INTO blobtest VALUES(:photo)'
AdoDataSet.Parameters.ParamByName['photo'].LoadFromStream(StringStream)
这个方法我试过不行
 
ADO Recordset 保存到XML 中其中BLOB 字段会被base64编码
用XMLdo
M 读入后应该用Base64解码.
 
在XML中不允许有非法字符,所以任何二进制流都会使用Base64加码。
uses EncdDecd;
然后使用DecodeString将其还原。
 
使用DecodeString返回的是字符串,
将其返回的字符串能用SQL直接插入的数据库中吗?
还是用其它的方式。
 
用TStringStream吧,大概可以解决你的,看看delphi的帮助,可以知道具体的使用方法
 
先用 TADODataSet 打開原表.
返回的內容可用 BOLBStream 方式增加或更新到原來的表中.
 
var photo:variant;
begin
Adodataset.loadfromfile('test.xml');
photo:=Adodataset.recordset.field['photo'].value;
AdoDataset.Close;
SQL:='INSERT INTO blobtest VALUES(:photo)'
AdoDataSet.Parameters.ParamByName['photo'].Value:=photo;
end;
 
办法笨了点,但总算能完成
 
后退
顶部