我习惯使用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}}进行分配。奇怪的。任何命令?
答案 0 :(得分:4)
CommandText
实际上仅适用于SELECT
或其他返回数据的操作(记录集)。它不适用于ExecSQL
或INSERT
/ 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
。