字符串的悖论(100分)

  • 主题发起人 主题发起人 Jao
  • 开始时间 开始时间
J

Jao

Unregistered / Unconfirmed
GUEST, unregistred user!
一个ISAPI的程序,向数据库中填加一条文本记录:

SQLString := 'INSERT table values("' + RequestString + '")';

RequestString是在一个Text,此时如果用户输入it's a dog,那么Delphi
会提示Missing right quote.
我开始用Stringreplace函数将单引号替换为‘+#39+’,结果却突兀的很:
显示为it+#39+s a dog.
同样,如果用户输入的是"it is a dog",SQL Server又会提示双引号引起错误。
唉,真是左右为难啊。
 
老问题,用parambyname就可以.
 
requeststring:=stringreplace(reqeuststring,'''','''+chr(39)+''');
SQLString := 'INSERT table values(''' + RequestString + ''')';
 
我赞成使用cAkk的方法,这种方法方便,而且清楚不容易出错
有情提醒:在运行execute前需要调用prepare方法
 
不调用prepare也可以.
 
常规的做法是先载取RequestString的值,判断中间有没有”、'、<、>、等,
然后再对字符串进行处理
 
cAkk的办法足矣!
省点心吧.
 
cAkk的办法最省事,管它什么字符都能丢进去.
 
省事不好,万一用户输入了不该输的东东怎么办?
不过要省事也是有办法的,就是判断输入的串中有没有非法的字符
有就提示出错,让他们重新输呗
那样操作也是非常简单的
 
xiaotian呀,那是数据库的事了,呵呵。
用户输错没办法的,特别是字符串,除非是像身份正这样有规律的东西或者绝对禁止
不然,用户真的要输入个‘《怎么办?
CAKK的办法不错,我又学到东西了
 
同意CJ , 这和数据库对SQL的解释有关, 同Delphi无关. 用参数传递可以解决.
 
请问CLENTDATASET中PARAM怎么用啊,可以象SQLQUERY中的PARAM那样用嘛?
 
SQLString := 'INSERT table values('+quotedstr(memo1.text)+')' 这样行
 
后退
顶部