写错了,这这样的:
数据库新增数据,各位是用这个方法:
ADOquery.append;
ADOquery[字段一]:=edit1.text;
ADOquery[字段二]:=edit2.text;
ADOquery[字段三]:=edit3.text;
ADOquery[字段四]:=edit4.text;
ADOquery.post;
还是:
ADOquery.sql.clear;
ADOquery.sql.add('insert into 表一');
ADOquery.sql.add('values(:edit1.text,:edit2.text,.....)');
.......
哪种方法好,我以前是用第一种的,但好多书上都是用第二种方法,
后来我也用第二种,但好容易出错,不知为什么?

解决方案 »

  1.   

    用第二种方法好点吧,
    必竟对数据库操作都是用SQL呀
      

  2.   

    都可以,第二种注意如果sql对表作了改动,用ADOquery.ExecSQL
      

  3.   

    都可以呀,就看你的需要和习惯了,不过,sql应该效率更高一些,何况sql是大势所趋吗
      

  4.   

    我用了:ADOquery.ExecSQL的了。
    但好容易出错,那又是为什么呢?
    我也好想用第二种方法的。
      

  5.   

    第一种很直观,改成dbedit,也不错。
      

  6.   

    第二种也可,
    str:string;
    str:=''//sql语句;
    adoquery.sql.clear;
    adoquery.sql.add(str);
    adoquery.execsql;
    用STR的原因是为了DELPHI中的语句与SQL中的语句转换更不容易出错
      

  7.   


    第二种会比较好一点,因为这一种更灵活,容易出错可能因为你还不熟练,
    我用第一种时遇到过问题,在用Insert,或append直接插入数据时,如果
    该表上有触发器,就会出错,并提示“该插入操作影响了多条纪录“,我也
    不知道是不是,Insert或Append方法不支持改多条纪录。另外,你是这样用的吗?
    ADOquery.close;
    ADOquery.sql.clear;
    //一条语句最好写成一行,应为写成多行对于某些语句来说会出现语法错
    ADOquery.sql.add('insert into 表一 edit1.text,:edit2.text,.....)');
    ADOquery,ExecSql;
    应该不会经常出错才对,你应该将出错提示、出错情形详细描述一下
      

  8.   

    ADOquery.sql.clear;
    ADOquery.sql.add('insert into 表一');
    ADOquery.sql.add('values(:a,:b,.....)');
    ADOquery.sql.ParamByName('a').asstring:=trim(edit1.text);
    ADOquery.sql.ParamByName('b').asstring:=trim(edit2.text);
    ......
    ADOquery,ExecSql;
      

  9.   

    第二种出错的原因可能有几点:
    1.你数据库中表的定义中有一些不能为空的字段,但是你在这里没有对它插入数据。
    2.插入数据时列名与数据没有顺序一致。如:Insert Table(a,b,c) Values(b,a,c)
    3.插入数据时列名比数据多或少。如:Insert Table(a,b,c,d) Values (a,b,c)
    还有一些值得注意的地方,平时注意一点我想出错的比率会小一些。