大家好
我现在遇到这样一个问题,用delphi 自带的adoquery来更新数据,但当一个字段的内容含引号的时候,如何处理呢。
我是这样做的,delphi 语法如下:
with Appdm.qry_Upd do
begin
close;
sql.Add('Update IT_PcFiksInfo SET FixsName='''+FixsName+''',OfType='''+OfType+''','+
'OfArea='''+OfArea+''',OfDept='''+OfDept+''','+
'UserOfID='''+UserOfID+''',UserOfName='''+UserOfName+''','+
'PcConfiguration='''+QuotedStr(PcConfiguration) +',OfficeAddr='''+OfficeAddr+''','+
'Depreciation='''+Depreciation+''',FixsPrice='''+FloatToStr (FixsPrice)+''' where pcid='''+pcid+'''');
ExecSQL;
end;
但当有一个字段值为含有引号的时候(如UserOfName字段的值为周's),就会出错。sql Server Profiler 跟踪的结果如下:
Update IT_PcFiksInfo SET
FixsName='IBM笔记本',OfType='C-BJB',OfArea='F-03',OfDept='D10',UserOfID='',UserOfName='周'S',PcConfiguration='14'英寸',OfficeAddr='资讯部办公室',Depreciation='',FixsPrice='0'
where pcid='C-ZJTESTA'
请问高手有没有比较好的处理带引号字段值的方法。
在此先谢谢大家了
我现在遇到这样一个问题,用delphi 自带的adoquery来更新数据,但当一个字段的内容含引号的时候,如何处理呢。
我是这样做的,delphi 语法如下:
with Appdm.qry_Upd do
begin
close;
sql.Add('Update IT_PcFiksInfo SET FixsName='''+FixsName+''',OfType='''+OfType+''','+
'OfArea='''+OfArea+''',OfDept='''+OfDept+''','+
'UserOfID='''+UserOfID+''',UserOfName='''+UserOfName+''','+
'PcConfiguration='''+QuotedStr(PcConfiguration) +',OfficeAddr='''+OfficeAddr+''','+
'Depreciation='''+Depreciation+''',FixsPrice='''+FloatToStr (FixsPrice)+''' where pcid='''+pcid+'''');
ExecSQL;
end;
但当有一个字段值为含有引号的时候(如UserOfName字段的值为周's),就会出错。sql Server Profiler 跟踪的结果如下:
Update IT_PcFiksInfo SET
FixsName='IBM笔记本',OfType='C-BJB',OfArea='F-03',OfDept='D10',UserOfID='',UserOfName='周'S',PcConfiguration='14'英寸',OfficeAddr='资讯部办公室',Depreciation='',FixsPrice='0'
where pcid='C-ZJTESTA'
请问高手有没有比较好的处理带引号字段值的方法。
在此先谢谢大家了
解决方案 »
- 变量代入内嵌汇编怎么就不对了呢……
- 判断鼠标在一个绘图组件内?
- 有点难度的问题,现在有一个颜色值=******,如何判断当的颜色值是在24位色内,8位色内,4位色内或1位色内呢?有没有什么好的方法呢?例子如下:
- 关于一个数据库的问题,想了几天没有结果,烦请高手指点!!!
- 难道就没有DLL高手了吗??? 奇怪......(分可加呀!!!就算穷家当产)
- 在dbgrid中可以实现这样的功能吗?
- 正在学习DELPHI开发三层结构的兄弟,请留下你们的QQ!
- 在delphi中如何初始化数组?
- 很簡單的問題!幫個忙!
- treeview 控件的问题!
- ImageENview载入TIF图片后,图片显示会变扁,请教如何解决
- 使用全局变量遇到的一个问题 请教下大家
ParaByName('fixsName').asString:=FixsName;
如: str:= 'asdf''asdf'; 中间的两个''代表一个'
问题我自己搞定了,我是通过一个自定义的函数来实现的。详情见下文。
function vartosql(value: Variant): String;
begin
if varisnull(Value) then
Result :='NULL'
else
Case VarType(Value) of
varDate :
Result :=Quotedstr(Datetimetostr(VartoDatetime(Value)));
varString,varOlestr:
Result :=Quotedstr(Trim(Vartostr(Value)));
varboolean:
begin
if Value then
Result :='1'
else
Result :='0';
end
else
Result :=Quotedstr(Trim(Vartostr(Value)));
end;
end;
*******************************************************************
begin
lsSQL :='Update IT_PcFiksInfo SET FixsName='+vartosql(FixsNameNew)+',OfType='+vartosql(OfTypeNew)+','+
'OfArea='+vartosql(OfAreaNew)+',OfDept='+vartosql(OfDeptNew)+','+
'UserOfID='+vartosql(UserOfIDNew)+',UserOfName='+vartosql(UserOfNameNew)+','+
'PcConfiguration='+vartosql(PcConfigurationNew)+',OfficeAddr='+vartosql(OfficeAddrNew)+','+
'Depreciation='+vartosql(DepreciationNew)+',FixsPrice='+vartosql(FloatToStr(FixsPriceNew))+' where pcid='+vartosql(pcid)+'';
if SQLInterface.ExecuteSQL(lsSQL,lsErr)<>0 then
begin
InformationDlg(tit,lsErr);
result :=1;
end;
end