我的库用oracle,其中只要字段是varchar()类型的就插入失败,
比如,
  ...
  query1.sql.add('insert into table1(name) values(:name)');
  query1.ParamByName('name'):='aaaa';
  .....
我执行后,
提示:
     ..operation not applicable..
各位大哥帮我看问题出在哪了,是不是类型不匹配啊,可是varchar()不是通用的吗?痛苦中????

解决方案 »

  1.   

    query1.Parameters.ParamByName('name').Value := 'aaaa';
      

  2.   

    用Varchar2类型来作为变长字符串,varchar类型一般不用。
      

  3.   

    换个写法: str:='insert into table1(name) values('''+value+''')';
    另外看看name是不是Oracle的关键字什么的
      

  4.   

    我就是用Varchar2啊,oracle里也没有varchar这种类型,
    我刚才用了,str:='insert into table1(name) values('''+value+''')';
     和query1.Parameters.ParamByName('name').Value := 'aaaa';可结果还是一样,你们可以把字符串类型的插入到oracle里的varchar2吗?
      

  5.   

    帮我看看这段代码> (id,bmbm 分别为number与varchar2(20)类型)有没有错:
    procedure TForm2.Button1Click(Sender: TObject);
    begin
         query1.Close;
         query1.SQL.Clear;
         query1.SQL.Add('insert into sdz_rclqkb(id,bmbm) values(:id,:bmbm)');
         query1.ParamByName('id').AsInteger:=23;
         query1.ParamByName('bmbm').AsString:='hyg';
         query1.Prepare;
         query1.ExecSQL;
         messagedlg('记录插入成功!',mtinformation,[mbYes],0);
         query1.Close;
         query1.SQL.Clear;
         query1.SQL.Add('select * from sdz_rclqkb');
         query1.Open;end;end.
    提示:
         ..operation not applicable..错误:我真搞不懂到底错哪了,
      

  6.   

    udmu.Adodm.OraSID.FieldByName('SIDCode').AsString:=Udmu.Adodm.DsSqlSelect.DataSet.FieldByname('code').asstring;用这种方试append就行了我用的是
    SimpleDataSet1控件能成功从sql里一条一条的导入数据包括任何类型的
      

  7.   

    SimpleDataSet1.post;
    SimpleDataSet1.applyupdates;
    这样就可以传上数据了我也是刚解决的
      

  8.   

    我怎么看不懂啊,我是刚用delphi,
    这是什么意思udmu.Adodm.OraSID.FieldByName('SIDCode').AsString:=Udmu.Adodm.DsSqlSelect.DataSet.FieldByname('code').asstring;
      

  9.   

    读了你的程序,没什么问题.在BDE工具中测试一下SQL语句,看是不是也不行.
    insert into sdz_rclqkb(id,bmbm) values(23,'hyg')怀疑是:还有其他"NOT NULL"字段没有輸値。或有什么不符合Table定義的条件。
      

  10.   

    按照下面的模式试试
        with ADOQuery2 do
        begin
            close;
            SQL.Text :='insert into classAB (CLID,DeptID,SPID,GRDID,AAA)'
                +'values(234,34,56,8,''sadfafef'')';
            execSQL;
        end;