我已经习惯使用变量来初始化我的查询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
分配没有。奇怪。有什么命令吗?
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
。