gpt4 book ai didi

delphi - 带变量的 SQL 查询

转载 作者:行者123 更新时间:2023-12-03 15:43:46 25 4
gpt4 key购买 nike

我正在为学校做 PAT,我正在执行以下操作,我该如何纠正它。我想发送输入的电子邮件地址姓名ID数字出生日期性别城镇,所有都是字符串,我的陈述是:

Adoquery1.sql.text := 'insert into besprekings 
values('email', 'name', 'Id', 'birth', 'gender', 'town')';

字段如下:

 Email(string), Name(string), ID(string), Birth(string), Gender(string), town(string) 

这并不是真正的家庭作业,而是一个占我学年 25% 的项目。我已经完成了所有事情,但无法做到这一点。我们必须引入一些我们在学校没有学过的新东西,对我来说,就是打开邮件(Windows 8)之类的程序,并且这样做我真的很感谢每个试图提供帮助的人。

最佳答案

您需要使用参数化查询,以防止 SQL 注入(inject)。尽管现在在您的应用程序中这可能不需要担心,但最好首先养成正确执行此操作的习惯。我将展示一些代码,您可以自己弄清楚如何完成它。

首先,正确填充您的 SQL。指定要插入的列的名称,以及将用于填充这些列的参数名称(以 : 开头的部分):

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('INSERT INTO beskprekings (email, name, Id)');
ADOQuery1.SQL.Add('VALUES (:email, :name, :Id)');

现在,使用您在 VALUES 列表中使用的相同名称,将要插入的实际值放入参数中:

ADOQuery1.Parameters.ParamByName('email').Value := email;
ADOQuery1.Parameters.ParamByName('name').Value := name;
ADOQuery1.Parameters.ParamByName('id').Value := Id;

现在,执行查询。

使用参数化查询的额外好处是,一旦运行一次,您只需重新填充参数并再次运行即可;数据库已经完成了准备查询所需的工作(提示:我标记的单词对 ADO 和其他数据库有意义 - 您应该研究一下),因此当您使用时速度会更快一次又一次。

关于delphi - 带变量的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11833675/

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