DELPHI中如何屏蔽内容中的引号?(100分)

  • 主题发起人 主题发起人 wskanss
  • 开始时间 开始时间
W

wskanss

Unregistered / Unconfirmed
GUEST, unregistred user!
假若有这么一个SQL语句:
insert into A(field) values('''+edit.text+''');
但若edit.text有引号就会报错,怎么屏蔽edit.text中的引号?
哪位高手帮忙解答一下:
 
我曾经这样处理过,你先搜索edit.txt里面是不是有引号,如果有,你进行修改。变成两个引号'',这样sql语句才不会出错。
 
将1个单引号改为2个单引号
 
不行啊,我那edit.text中内容要加密,我也说不准哪里会产生引号
只能把整个edit.text的引号屏蔽掉.
 
循环一下edit把引号清除
 
'.... values('+QuotedStr(edit.text)+')';
注意,QuotedStr会自动给edit.text的字符串两边加上单引号,而edit.text里面包含的单引号会被QuotedStr改成连续两个单引号,所以不会在查询中报错,这是标准用法.
 
用POS()函数判断是否有引号等异常字符,如果有则更换为加一字符。
 
赞成zqw0117
 
values('+QuotedStr(edit.text)+')'试过了
但edit.text里面包含的单引号并没有被QuotedStr改成连续两个单引号,跟原来的一样啊
[?]~~~~~~~~~~~~
 
你从哪里看到一样啊,是指最终保存到库里的内容吗?

至于QuotedStr的用法你可以自己再测试一下,试试就明白了。
QuotedStr(Edit1.Text) = ??
 

谢谢楼上的,我加密后用那个函数不知怎么不能变双引号
不加密还是可以解决那个问题
 
AnsiQuotedStr(Edit1.Text, '"')
 
AnsiQuotedStr(Edit1.Text, '"')
也试过了,也不行,不知怎么字符加密后里面的变不了
如还是 ')I'#9'f媌u儏<泦?'#$1E'虏5'#$B'弇>輆盿e袩葒_'#3'?彑?鱤Kl'#$1D'蒏?詙?氾'#$B'?e??CR?'#4#0'箍犻??'#$13')!|C
 
使用参数:
qr.sql.text := insert into A(field) values(:value);
qr.parameters[0].value := edit.text;
 
一定要用SQL,要不提交出错怎么回滚,有很多表关联的
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
893
DelphiTeacher的专栏
D
D
回复
0
查看
960
DelphiTeacher的专栏
D
D
回复
0
查看
974
DelphiTeacher的专栏
D
D
回复
0
查看
798
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部