DBGo INSERT INTO via SQL.命令文本



我已经习惯使用变量来初始化我的查询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或其他操作。它不是为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

最新更新