本人写的三层系统中,要要用TClentDataSet向数据库中插入Blob字段类型的数据,该数据是一个formula one的文件(test.vts),虽然插了进去,但是读出来的文件却打不开,说文件无效,请高手指点,方法如下:
strFileName:='c:\test.vts';
stmFiles:=Tfilestream.Create(strFileName,fmOpenRead);clientdataset1.CommandText:='insert into userid.xt_blob(YHDM,YHMC,YHKL,QM)'+' values(''vts'',''笑眯眯'',''111'',:BB1)';
clientdataset1.Params.CreateParam(ftblob,'BB1',ptInput);
clientdataset1.Params.ParamByName('BB1').LoadFromStream(stmFiles,ftblob);
clientdataset1.Execute;
clientdataset1.Params.Clear;
stmfiles.Free;
strFileName:='c:\test.vts';
stmFiles:=Tfilestream.Create(strFileName,fmOpenRead);clientdataset1.CommandText:='insert into userid.xt_blob(YHDM,YHMC,YHKL,QM)'+' values(''vts'',''笑眯眯'',''111'',:BB1)';
clientdataset1.Params.CreateParam(ftblob,'BB1',ptInput);
clientdataset1.Params.ParamByName('BB1').LoadFromStream(stmFiles,ftblob);
clientdataset1.Execute;
clientdataset1.Params.Clear;
stmfiles.Free;
我用tdataset.fieldby('bb1').asblob.loadfromstream(fp)存,没使用过这种方法存。
你读文件的代码拿出来看看
TBlobField(Cds.FindField('blob')).LoadFrom(MyMemoryStream);
cds.Post;
cds.ApplyUpdate;