打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
delphi中SQL避免非法字符,单引号()出错的三种方法

由于 ' (单引号)是SQL的标准字符符号,所以在SQL语句中间遇到 ' 时要做特殊处理。
1. 使用 QuotedStr 函数
QuotedStr的作用是使字符串包含单引号: 
在字符的前后加上( ')号,因为在DELPHI中字符赋值是需要引号的
比如 
CommandText   :=   CommandText   +   QuotedStr(Edit1.Text);  
Sql := 'select ... from ... where uName='  + QuotedStr(Edit1.Text); 
上面的语句还可以写成:
Sql := 'select ... from ... where uName='  + Char(39) + stringreplace(Edit1.Text,'''','''''',[rfReplaceAll])+ Char(39); 
Char(39) 代码一个分号 stringreplace 把字符串中的单引号换成两个单引号,只是还是QuotedStr好用,前后加了单引号而且把见到的单引号都替换成两个单引号了;

2、采用替代法 即用 " 代替 ' ,正好delphi有现在的函数,
例如:
UName :=stringreplace(ComBoUser.Text,'''','''''',[rfReplaceAll]);
UPwd :=StringReplace(EPassword.Text ,'''','''''',[rfReplaceAll]);
Sql :='select UAuth from VUser where UName=''' +UName +''' and UPwd=''' +UPwd +'''';
adoquery1.SQL.Add(Sql);

3、采用参数法 即用参数代替变量 ,此时不需要对变量做任何处理,例如:
AdoQuery1.SQL.Add('update GoodsReason set GRCode =:VC,GRName =:VN where GID =:ID');
AdoQuery1.Parameters.Clear;
AdoQuery1.Parameters.CreateParameter('VC',ftString,pdinput,10,EGCode.Text );
AdoQuery1.Parameters.CreateParameter('VN',ftString,pdinput,20,EGName.Text );
AdoQuery1.Parameters.CreateParameter('ID',ftInteger,pdinput,8,StrToInt(GoodsId.Caption));
AdoQuery1.ExecSQL ;

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Delphi中QuotedStr介绍及使用
总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法
Excel导入到SQL
想通过delphi将word和pdf文件保存到数据库中,需要时下载到硬盘上操
DELPHI如何调用存储过程
Delphi错误“RichEdit Line insertion err...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服