我是delphi的新手,我想问一下如何在delphi中创建正确的SQL语句/ SQL字符串。
我尝试过这样的事情:
sql:='use [TestovaciaDb] INSERT INTO [dbo].[client]([Meno],[Priezvisko]) VALUES('+name+','+surname+')';
我正在使用MS SQL server 2012
但我在那里得到例外。谢谢
编辑:
meno
和priez
是包含TEdit1
和TEdit2
值的变量:
meno:= Edit1.Text;
priez:= Edit2.Text;
答案 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例程。