MSSQL的形参怎么会把单引号给弄没了?(100)

  • 主题发起人 主题发起人 Lessy
  • 开始时间 开始时间
L

Lessy

Unregistered / Unconfirmed
GUEST, unregistred user!
SQL语句如下:declare @A nvarchar(1000)set @A=:bSELECT @A////////////////////adoquery1.close;adoquery1.paramByName('b').Value:=' and Name like ''%'+Edit1.Text+'%''';adoquery1.open;如果Edit1输入的是英文/数字,结果就是: and Name like '%abc%'但如果输入的是中文,结果就变成: and Name like '%张三%后面的单引号会没了,怎么解决呀?
 
那就不要用这种方法,直接拼接到sql语句里试试。
 
to szhcracker因为要sql语句是自定义的,就是事先我不知道要执行什么查询,所以查询条件也不知道是什么,只能通过动态把条件赋进去,最后通过exec或者sp_executesql来执行
 
like ''%'+Edit1.Text+'%''';改为like "%'+Edit1.Text+'%"';
 
那你先试试直接写,看看是否会把最后的单引号去掉,如果不会,那可能就是别的问题了。
 
to zhengrong117问题照旧,后面的双引号也没了
 
to szhcracker直接当然不会呀,就是作为形参输入才出现
 
' and Name like ' + QuotedStr(% + edit1.text + %)
 
to duxing 都试过了,还是一样还有我发现了一样东西,其实不是单引号的问题我输入:张三哥123结果是:张三哥12看来是传进去时被截断了,郁闷啊
 
那估计是MySQL中的字符集的问题了,网上找找解决办法
 
LS的,人家都说是MSSQL了,好像与MySQL无关吧?
 
汗,一直看成mysql了
 
应该是中文是双字节的问题,反正单字节的就没问题,怎么双字节的就截断了呢
 
adoquery1.Parameters.ParamByName('b').Size:=length(adoquery1.Parameters.ParamByName('b').value)设置下size看看
 
你先定义一个变量var ws: WideString;然后 ws :=' and Name like ''%'+Edit1.Text+'%''';最后再 adoquery1.paramByName('b').Value := ws;试试。
 
解决了是ADODB.PAS里面的vardatesize函数的问题
 
后退
顶部