gpt4 book ai didi

sqlite - 如何在 Delphi 将整数值插入 SQLite 表

转载 作者:行者123 更新时间:2023-12-03 18:24:52 24 4
gpt4 key购买 nike

我正在尝试在我的 SQLite 中插入整数值德尔福的 table 。
表中emp usergroup_id是整数和 label , description是字符串数据类型。
我的代码如下:

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的整数值使用上述查询进入数据库。什么是正确的格式?

最佳答案

您的 gid成为 SQL 语句的一部分(因此 Error: Unknown column gid )。
您需要使用 Delphi gid构造 SQL 语句的变量(就像您对 sdescriptionldescription 所做的那样):

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

如果你会使用 参数 你不会有这么困惑的查询/代码(这也受到 SQL 注入(inject)等的影响),例如:
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;

关于sqlite - 如何在 Delphi 将整数值插入 SQLite 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19220938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com