如何插入整数值SQLite表德尔福(How to insert integer value into

2019-10-18 18:15发布

我想在我的插入整数值SQLite德尔福表。
在表emp usergroup_id是整数和labeldescription是字符串数据类型。
我的代码如下:

var
  gid: Integer;
  sdescription,ldescription: String;
begin
  sdescription := RzEdit1.Text;
  ldescription := RzMemo1.Text;
  gid := Integer(RzComboBox1.Items.Objects[RzComboBox1.Items.IndexOf(gname)]);

  try
    SQLConnection1.Connected := true;
    SQLMonitor1.Active := True;
    sSql := 'INSERT INTO emp(usergroup_id, label, description) VALUES (gid,''' + sdescription + ''',''' + ldescription + ''' )';
    SQLConnection1.ExecuteDirect(sSql);

  except
    on E: EDatabaseError do
      ShowMessage('Exception raised with message' + E.Message);
  end;
end;

这是给我一个错误Unknown column gid
当我试图像这样有固定的整数值,而不是变量它的工作原理:

sSql := 'INSERT INTO emp(usergroup_id, label, description) VALUES (1,''' + sdescription + ''',''' + ldescription + ''' )';

它值插入成功打入表。
如何插入的整数值gid与上面的查询数据库。 什么是正确的格式?

Answer 1:

您的gid成为SQL语句(因此错误:一部分Unknown column gid )。
您需要使用Delphi的gid变量来构造SQL语句(就像你做sdescriptionldescription ):

sSql := 'INSERT INTO emp(usergroup_id, label, description) VALUES (' + InttoStr(gid) + ', ''' + sdescription + ''',''' + ldescription + ''' )';

如果你要使用的参数 ,你不会有这样的凌乱查询/代码(这也是受到SQL注入等。)例如:

qry := TSQLQuery.Create(nil); // or what ever TQuery component you use in your framework
try
  qry.SQLConnection := SQLConnection1;
  qry.SQL.Text := 'INSERT INTO emp(usergroup_id, label, description) VALUES (:usergroup_id, :label, :description)';
  qry.Params.ParamByName('usergroup_id').Value := gid;
  qry.Params.ParamByName('label').Value := sdescription;
  qry.Params.ParamByName('description').Value := ldescription;
  qry.ExecSQL;
finally
  qry.Free;
end;


文章来源: How to insert integer value into SQLite table at Delphi