用clientdataset往数据库中插入数据,表中有一个字段是二进制,请问如何在插入其他数据的同时插入二进制数据,这样的SQL语句怎样写?

解决方案 »

  1.   

    clientdataset1.CommandText:= 'insert into 法律法规表(名称,类型,密级,数据) values('''+edit2.Text+''','''+edit3.Text+''','''+combobox1.Text+''')';
    "数据"字段是二进制,难道直接把Tblobfield(clientdataset1.fieldbyname('数据')).loadfromfile('')写在values中,好象不行吧。
      

  2.   

    用参数啊,老大;
    CLIENTDATASET1。PARAMTERS。
      

  3.   


    procedure TfrmS_OrgaStruct.SaveTreeToDb;
    var
      ms:Tmemorystream;
    begin
      cdsmain.active:=false;
      cdsmain.CommandText:='select * from table where 1=2');
      cdsmain.active:=true;
      ms:=Tmemorystream.create;
      try
      TrvM.SaveToStream(ms);
       cdsmain.Append;
       cdsmain.FieldByname('id').AsInteger:=1;
      TBlobField(cdsmain.FieldByname('blob')).Loadfromstream(ms);
      cdsmain.Post;
      cdsmain.applyupdate(0);
      finally
      ms.free;
      end;
    end;
      

  4.   

    用流,同意 suny_2001(小鱼儿)
      

  5.   

    如果不用流,用loadfromfile行吗,怎么用,着急
      

  6.   

    当然也没问题了,你把我的原来的TrvM.SaveToStream(ms);改成SAVEFILE(filename),然后保存时
    TBlobField(cdsmain.FieldByname('blob')).Loadfromfile(filename);就可以了
      

  7.   

    如果我要同时插入其他数据而且不能用参数的话呢;
    clientdataset1.commandtext:='insert .... values(....);这样的怎么写
      

  8.   

    我的原码是:
      ClientDataSet1.Close;
      clientdataset1.CommandText:= 'insert into 法律法规表(名称,类型,密级) values('''+edit2.Text+''','''+edit3.Text+''','''+combobox1.Text+''')';
      ClientDataSet1.Execute;
      ClientDataSet1.Open;
      Tblobfield(sysdata.ClientDataSet1.FieldByName('数据')).LoadFromFile(edit1.Text);
      sysdata.ClientDataSet1.ApplyUpdates(0);
    可运行时系统提示不能插入重复值
      

  9.   

    ClientDataSet1.Close;
      clientdataset1.CommandText:= 'insert into 法律法规表(名称,类型,密级) values('''+edit2.Text+''','''+edit3.Text+''','''+combobox1.Text+''')';
      ClientDataSet1.Execute;
      ClientDataSet1.Open;
      //OPEN后重新找到那条你刚才插入的那条记录
      ClientDataSet1.Edit;
      Tblobfield(sysdata.ClientDataSet1.FieldByName('数据')).LoadFromFile(edit1.Text);
      ClientDataSet1.Post;
      ClientDataSet1.ApplyUpdates(0);