with query1 do
        begin
           close;
           sql.Add('insert test(name,class) values(:a,:b)');
            query1.Parameters.ParamByName('a').Value:=trim(edt_name.Text);
            parameters.ParamByName('b').Value:=trim(edt_class.Text);
           try
            execsql;
               except
                  open;
                 end;           end;
为什么总提示类型不对 name,class均是varchar(8)   把参数a变成  '''+edt_name.text+'''就可以分少,可用分少之又少,望海涵

解决方案 »

  1.   

    with query1 do
            begin
               close;
               sql.Add('insert test(name,class) values(:a,:b)');
               parameters.ParamByName('a').DataType:=ftstring;
                query1.Parameters.ParamByName('a').Value:=trim(edt_name.Text);
                parameters.parambyname('b').datatype:=ftstring;
                parameters.ParamByName('b').Value:=trim(edt_class.Text);
               try
                execsql;
                   except
                      open;
                     end;           end;问题已搞定了.parameters.ParamByName('a').DataType:=ftstring;  能不能不加,或者有没有更好的方法?
      

  2.   

    with query1 do
            begin
               close;
               sql.clear;//
               sql.Add('insert test([name],[class]) values(:a,:b)');
                Parameters.ParamByName('a').Value:=trim(edt_name.Text);
                parameters.ParamByName('b').Value:=trim(edt_class.Text);
               try
                prepared; 
                execsql;
                   except
                      //open;  ????
                     end;           end;
      

  3.   

    'insert into test 吧
    哦 应该没这样的道理吧
      

  4.   

    刚才我也试了要设置设置数据类型才可以
    但是看到书上好像是不设置的
    parameters.ParamByName('a').DataType:=ftstring;我一般是直接用chan插入语句写
    要么你先在query1的sql中设置好
      

  5.   

    刚才没设置
    parameters.ParamByName('a').DataType:=ftstring;
    它竟然也能插入了
      

  6.   

    to yinzhiw(不懂OOP)
    什么是chan.是不是  '''+edt_name.text+'''啊。
    为什么我一加parameters.ParamByName('a').DataType:=ftstring;就可以了,不加就不行
      

  7.   

    刚才打错了
    是像你说的'''+edt_name.text+''' 觉得还更省事刚才没用
    parameters.ParamByName('a').DataType:=ftstring
    竟然也没有出错
      

  8.   

    parameters.ParamByName('a').DataType:=ftstring
    在以前在dfw看到了不加,可以俺今一使了一下,还是要加,what?
      

  9.   

    query1.Parameters.ParamByName('a').AsString:=trim(edt_name.Text);