DBGo INSERT INTO通过SQL.CommandText

时间:2012-11-29 21:50:05

标签: delphi

我习惯使用SQL.TEXT变量来初始化我的查询,以避免两个语句:SQL.Clear; SQL.Add( );使用DBExpress。

将dbGo用于新的小项目,这样做:

SQL.CommandText := 'INSERT INTO LeaveClass (id,name,color,status) VALUES (1,''Joe'',255,''Ok'')';
ExecSql;

此命令因语法错误而中断。但是如果我们使用:

SQL.Clear;
SQL.Add( 'INSERT INTO LeaveClass (id,name,color,status) VALUES (1,''Joe'',255,''Ok'')' );
ExecSql;

工作正常!好吧,我已经浪费了一些时间才赶上这个问题并找到解决办法。我该怎么办?可能是dbGo.ADOQUERY.Sql.Clear通过dbGo.ADOQUERY.SQL.CommandText进行深度清理而不是通过{{1}}进行分配。奇怪的。任何命令?

1 个答案:

答案 0 :(得分:4)

CommandText实际上仅适用于SELECT或其他返回数据的操作(记录集)。它不适用于ExecSQLINSERT / DELETE类型的操作。

只需使用ADOQuery.SQL.Text代替:

ADOQuery1.SQL.Text := 'INSERT INTO LeaveClass (id,name,color,status) VALUES (1,''Joe'',255,''Ok'')';
ADOQuery1.ExecSQL;
ADOQuery1.Close;

直接设置Text属性会自动替换以前的属性,从而无需Clear