【发布时间】:2014-04-17 13:37:43
【问题描述】:
我正在使用 Delphi Xe5 和 ZeosLib 连接到 Web 服务器上的远程数据库。
我正在使用以下代码将记录插入到表中。但每次我插入并且名称中有 (') 时,我都会收到错误消息。
错误说我的语法错误,变量中的(')与sql语句混淆。
我该如何解决这个问题。
代码:
Data.personel.Active:=false;
sqltext:=data.personel.SQL.Text;
data.personel.SQL.Text:='Insert Into personel (name,surname,id_number,gender,company_name,nature_of_business,position_at_company,type_of_post,renumeration,company_size,duties,benefits,document_id,date_created,date_record_added) ' +
'VALUES ('''+name1+''','''+surname+''','''+idnumber+''','''+gender+''','''+companyname+''','''+natureofbusiness+''','''+positionatcompany+''','''+typeofpost+''','''+renumeration+''','''+companysize+''','''+duties+''','''+benefits+''','''+DokID+''',+'''+FormatDateTime('yyyy-mm-dd',Date_Created)+''','''+FormatDateTime('yyyy-mm-dd',Date_added)+''')';
Data.personel.ExecSQL;
我知道我的方法不是最简洁的,但我只需要解决 (') 问题。感谢您的帮助
【问题讨论】:
-
使用参数,你会没事的。 [如果有人发表一些我们可以链接到的一般性帖子,那就太好了;看起来这种问题每周被问两次]
-
如果此时你不能使用参数(即如果你的动态 SQL 需要一个变量表名),那么你需要使用 QuotedStr。但实际上,尽管如果您有现有代码,这似乎更容易,但首先使用参数,因为它们有额外的好处。
-
@MatTAllwood 能否请您发布一个示例。我以前从未使用过参数或 qoutedstr?