不要用insert,这样:
Table1.Edit;
(Table1.FieldByName('AA') as TBlobField(如果是ADOTable,一定要改为TADOBlobField)).LoadFromFile();
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
             毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
  I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
    

解决方案 »

  1.   

    呵呵,你要是指全部在SQL SERVER的查询分析器上运行的,除了老实把二进制数写上的话,好象没什么方法,在程序中写入时可以这样
    sql.clear;
    sql.add('insert into tabel(a) :a);
    parambyname('a').loadfromstream(...);
      

  2.   


    query.insert;
    TBlobField(Query.FieldByName('PHOTO')).Loadfromfile(filename);
    query.post;
      

  3.   

    谢谢指点,可事情是这样的,我为的提高向服务器提交数据的速度才使用insert的。我用ADOTABLE已经解决了这个问题,可是速度太慢了。所以我想用insert语句。
      

  4.   

    现在手上有一个例子供参考。
    //写入 
    Myquery.sql.add(insert mytable (ID,MyBlobField ) Value ("1",:VMypic))
    MySTM:=TmemoryStream.Create;
    Myjpeg.savetostream(Mystm);
    MySTM.Seek(0,0);
    MyBuf:=AllocMem(Mystm.size+1);
    MySTM.ReadBuffer (MyBuf^,Mystm.size);
    MyQuery.Params[0].SetBlobData(Mybuf,Mystm.size);
    MySTM.Free;
    Dispose(MyBuf);
    MyQuery.ExecSQL; //读&显示(TclientDataset)
    var
    MyJpeg:Tjpegimage;
    PicSTM:TClientBlobStream;
    begin
    MyJpeg:=Tjpegimage.Create;
    try
    PicSTM:=TClientBlobStream.Create(Tblobfield(MyClientDataSet.FieldByName('MyBlobField')),Bmread);
    finally
    end;
    if picStm.size=0 then begin image1.Visible:=false; exit; end;
    MyJpeg.LoadFromStream(PicSTM);
    image1.Picture.Assign(MyJpeg);
    image1.Visible :=true;
    Myjpeg.free;
    PicSTM.Free;
    end;
      

  5.   

    adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.add('insert into 表(字段1,Blob字段) values(:a,:b)');
    adoquery1.Parameters.ParamByName('a').Value:='001';
    adoquery1.Parameters.ParamByName('b').LoadFromFile('df',ftBlob);
    adoquery1.ExecSQL