如何在delphi中创建正确的SQL语句

时间:2014-03-18 13:54:46

标签: sql sql-server delphi

我是delphi的新手,我想问一下如何在delphi中创建正确的SQL语句/ SQL字符串。

我尝试过这样的事情:

 sql:='use [TestovaciaDb] INSERT INTO [dbo].[client]([Meno],[Priezvisko]) VALUES('+name+','+surname+')';

我正在使用MS SQL server 2012

但我在那里得到例外。谢谢

编辑:

menopriez是包含TEdit1TEdit2值的变量:

 meno:= Edit1.Text;
 priez:= Edit2.Text;

3 个答案:

答案 0 :(得分:7)

使用参数化查询。您在ConnectionString中设置数据库,因此您不需要在查询中“使用”它。

ADOQuery1.SQL.Text := 'INSERT INTO [dbo].[client] ([Meno],[Priezvisko]) ' +
                      'VALUES(:Meno, :Priezvisko)';
ADOQuery1.Parameters.ParamByName('Meno').Value := Edit1.Text;
ADOQuery1.Parameters.ParamByName('Priezvisko').Value := Edit2.Text;
ADOQuery1.ExecSQL;

答案 1 :(得分:1)

在声明开头删除use [xxx]。您使用的连接必须已配置为指向正确的数据库。就像许多人说的那样,避免使用常数创建句子,而是使用参数。

答案 2 :(得分:0)

http://docwiki.embarcadero.com/Libraries/XE3/en/System.SysUtils.QuotedStr

使用QuotedStr函数。 例如

sql:='use [TestovaciaDb] INSERT INTO [dbo].[client]([Meno],[Priezvisko]) VALUES('+QuotedStr(name)+','+QuotedStr(surname)+')';

使用QuotedStr将字符串S转换为带引号的字符串。在S的开头和结尾插入单引号('),并重复字符串中的每个单引号。要从带引号的字符串中删除引号,请使用AnsiDequotedStr例程。