procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
Close;
sql.Clear;
sql.Add('Insert into Vote values(:can,:vote)');
Parameters.ParamByName('can').Value := Trim(Edit1.Text);
Parameters.ParamByName('vote').Value := StrToInt(Edit2.Text);//出错
ExecSQL;
end;
ADOTable1.Close;
ADOTable1.Open;
end;运行后提示 应用程序在当前操作中使用了错误的数据类型..
vote对应的字段 是int类型的.
不过就是还有一个自增的字段. delphi里头自增的字段应该也不用在插入的时候再写吧??
为什么会出错,,??? 大侠指点
begin
with ADOQuery1 do
begin
Close;
sql.Clear;
sql.Add('Insert into Vote values(:can,:vote)');
Parameters.ParamByName('can').Value := Trim(Edit1.Text);
Parameters.ParamByName('vote').Value := StrToInt(Edit2.Text);//出错
ExecSQL;
end;
ADOTable1.Close;
ADOTable1.Open;
end;运行后提示 应用程序在当前操作中使用了错误的数据类型..
vote对应的字段 是int类型的.
不过就是还有一个自增的字段. delphi里头自增的字段应该也不用在插入的时候再写吧??
为什么会出错,,??? 大侠指点
'IDENTITY注意问题'
1. 会话中某个表已将此属性设置为ON,当为另一个表发出了SET IDENTITY_INSERT ON 句时将出错
--测试的表
CREATE TABLE ta(id int IDENTITY(1,1),col int)
CREATE TABLE tb(id int IDENTITY(1,1),col int)
GO--设置 IDENTITY_INSERT 属性
SET IDENTITY_INSERT ta ON
SET IDENTITY_INSERT tb ON
GO
/*======================================================*/
--2. 如果插入记录的标识值大于表的当前标识值,则SQL Server自动将新插入值作为当前标识值使用
--测试的表
CREATE TABLE tb(id int IDENTITY(1,1),col int)--强制在表中插入标识值
SET IDENTITY_INSERT tb ON
INSERT tb(id,col) VALUES(10,1)
SET IDENTITY_INSERT tb OFFINSERT tb(col) VALUES(2)
SELECT * FROM tb
/*--结果
id col
----------------- -----------
10 1
11 2
--*/
GO
/*======================================================*/
--3. 如果插入记录的标识值小于表的当前标识值,则表的当前标识值不受新插入值的影响
--测试的表
CREATE TABLE tb(id int IDENTITY(1,1),col int)
INSERT tb VALUES(1)
INSERT tb VALUES(2)--强制在表中插入标识值
SET IDENTITY_INSERT tb ON
INSERT tb(id,col) VALUES(1,11)
SET IDENTITY_INSERT tb OFFINSERT tb(col) VALUES(3)
SELECT * FROM tb
/*--结果
id col
----------------- -----------
1 1
2 2
1 11
3 3
--*/
Parameters.ParamByName('can').Value := Trim(Edit1.Text);
Parameters.ParamByName('vote').Value := StrToIntDef(Edit2.Text,0);//出错 Edit2.Text中不是一个INT型数据
楼主可以在delphi中看下这两边的类型啊
这类型肯定是不一致啊
两边都应该是string类型
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text :='1';
AdoQuery1.Close;
Adoquery1.SQL.Clear ;
AdoQuery1.SQL.Add('insert into a values(''1'','''+edit1.Text+''')');
Adoquery1.ExecSQL ;
end;select * from a
1 1
(所影响的行数为 1 行)
'你在说不行就算了'
字段2对应“vote”参数
还有一个自增字段就让数据库自己处理吧,这样就可以了