一个令人困惑的问题,来者有分
我在http://community.csdn.net/Expert/topic/3180/3180084.xml?temp=.3381006中提到的一个问题,
zzllabc(抱朴子--清心释累,绝率忘情) 解决了这个问题,但是又有新的问题出现。
原文如下:
**********************************************************************************
q为TClientDataSet,
log表为Sql Server数据库中的一个表,其中name为nvarchar字段,edi为varchar字段
q.Close;
q.CommandText:='Insert into log(name,edi) values(:c,:b)';
q.Params.ParamByName('c').Value:='我们朋友';
q.Params.ParamByName('b').Value:='我们';
try
q.Execute;
showMessage('ok');
finally
q.Close;
end;
这样存入数据库中后,name 字段的内容为“我们”,edi字段的内容为“我”。
如果存入的字符为汉字,就只能存入一半。如果存入的字符为英文字母就能够存完整。
我在oracle数据库中使用没有这个问题。
如果不用三层结构也没有这个问题。
现在不知道是Sql server的问题还是三层结构的问题,在sql server 中怎么解决这个问题?
不知道大家有没碰到过这个问题
**********************************************************************************
解决办法:不用参数,直接写SQL语句,例如:
q.Close;
q.CommandText:='Insert into log(name,edi) values('''+'我们朋友'+''''+','''+'我们'+''''+')';
就可以了。
……………………………………………………………………………………………………………………………
现在的问题是:
q.Close;
q.CommandText:='Insert into log(name,edi) values('''+'Edit1.text+''''+','''+'我们'+''''+')';
在Edit1.text文本中内容含有单引号,这势必会报错。
不知道各位大侠有没什么高见,谢谢了