写错了,这这样的:
数据库新增数据,各位是用这个方法:
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,.....)');
.......
哪种方法好,我以前是用第一种的,但好多书上都是用第二种方法,
后来我也用第二种,但好容易出错,不知为什么?
数据库新增数据,各位是用这个方法:
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,.....)');
.......
哪种方法好,我以前是用第一种的,但好多书上都是用第二种方法,
后来我也用第二种,但好容易出错,不知为什么?
必竟对数据库操作都是用SQL呀
但好容易出错,那又是为什么呢?
我也好想用第二种方法的。
str:string;
str:=''//sql语句;
adoquery.sql.clear;
adoquery.sql.add(str);
adoquery.execsql;
用STR的原因是为了DELPHI中的语句与SQL中的语句转换更不容易出错
第二种会比较好一点,因为这一种更灵活,容易出错可能因为你还不熟练,
我用第一种时遇到过问题,在用Insert,或append直接插入数据时,如果
该表上有触发器,就会出错,并提示“该插入操作影响了多条纪录“,我也
不知道是不是,Insert或Append方法不支持改多条纪录。另外,你是这样用的吗?
ADOquery.close;
ADOquery.sql.clear;
//一条语句最好写成一行,应为写成多行对于某些语句来说会出现语法错
ADOquery.sql.add('insert into 表一 edit1.text,:edit2.text,.....)');
ADOquery,ExecSql;
应该不会经常出错才对,你应该将出错提示、出错情形详细描述一下
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;
1.你数据库中表的定义中有一些不能为空的字段,但是你在这里没有对它插入数据。
2.插入数据时列名与数据没有顺序一致。如:Insert Table(a,b,c) Values(b,a,c)
3.插入数据时列名比数据多或少。如:Insert Table(a,b,c,d) Values (a,b,c)
还有一些值得注意的地方,平时注意一点我想出错的比率会小一些。