0

我已经习惯使用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没有进行的深层清洁。诡异的。有什么命令吗?

4

1 回答 1

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.

于 2012-11-29T23:16:40.970 回答