关于数据更新

daijingjie2002 2007-06-30 12:26:16
各位大虾,我有以下语句
update.SQL.Add('insert into aaa_lld(lldno,hbdno,ddate,cdepcode,prono,cmemo,hander) values('+
''''+main_ado.fieldbyname('lldno').AsString+''''+','+
''''+main_ado.fieldbyname('hbdno').AsString+''''+','+
''''+main_ado.fieldbyname('ddate').AsString+''''+','+
''''+main_ado.fieldbyname('cdepcode').AsString+''''+','+
''''+main_ado.fieldbyname('prono').AsString+''''+','+
''''+main_ado.fieldbyname('cmemo').AsString+''''+','+
''''+mainunit.username+''''+')');
由于main_ado.fieldbyname('prono').AsString='FCDD0706005','FCDD0706021'
不能更新
跟总sql语句如下
insert into aaa_lld(lldno,hbdno,ddate,cdepcode,prono,cmemo,hander) values('001','001','2007-06-30 12:26:29','06',''FCDD0706005','FCDD0706021'','','ADMIN')
我该怎么改呀
...全文
249 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cLich 2007-07-19
  • 打赏
  • 举报
回复
如果只有小部分的字符包含 引号,可以转换成全角,
但有很多,或者字符必需包含引号的情况,就只能用 参数方式了
tom_cat007 2007-07-03
  • 打赏
  • 举报
回复
逗号是SQL的分隔符
tom_cat007 2007-07-03
  • 打赏
  • 举报
回复
晕,把半角的逗号转成全角的逗号就可以了!
hongqi162 2007-07-02
  • 打赏
  • 举报
回复
''''+StringReplace( main_ado.fieldbyname('prono').AsString,'''','''''',[rfReplaceAll])+''''+','+
hongqi162 2007-07-02
  • 打赏
  • 举报
回复
你需要对你的main_ado.fieldbyname('prono').AsString里的字符串里的单引号进行转意才可以,写个函数将prono里的单引号转成两个引号
daijingjie2002 2007-07-02
  • 打赏
  • 举报
回复
lishan200012的方法虽然可以,但是会影响我其他的语句,所以只能用字符,大家再帮想想办法
Jethill 2007-07-02
  • 打赏
  • 举报
回复
('001','001','2007-06-30 12:26:29','06',''FCDD0706005','FCDD0706021'','','ADMIN')
其中的''FCDD0706005','FCDD0706021''为什么有两个撇号??
是不是这里的问题.
cLich 2007-07-02
  • 打赏
  • 举报
回复
注入式攻击也是利用这个方式来攻击的.最好用参数方式提交:
以下例子
var
ExecResult: integer;
NewGID: integer;
begin
try
CheckData(Group);

with sAdoq do begin
Parameters.Clear;
Parameters.CreateParameter('UserID',ftString,pdInput,Len,FUserID);
Parameters.CreateParameter('gGroupID',ftInteger,pdInput,4,NewGID);
Parameters.CreateParameter('gTitle',ftString,pdInput,gTitleLen,Group.Title);
Parameters.CreateParameter('gLastChangeCount',ftInteger,pdInput,4,Group.LastChangeCount);

SQL.Text := 'insert into t (UserID,GroupID,Title,LastChangeCount) '
+ ' values (:UserID,:gGroupID,:gTitle,:gLastChangeCount) ';

ExecResult := ExecSQL;
end;
Result := arrFinish;
except
Result := arrDataBaseFailed;
end;


这样不管值包括什么非法字符都没有问题,还能阻止注入式攻击
brightyang 2007-07-02
  • 打赏
  • 举报
回复
顶上去
huayufei 2007-07-02
  • 打赏
  • 举报
回复
不能不用字符呀 '是可以用#39来显示的,那样不就清楚多了。
lishan200012 2007-07-01
  • 打赏
  • 举报
回复
或者这样写比较好看
update.SQL.Add('insert into aaa_lld(lldno,hbdno,ddate,cdepcode,prono,cmemo,hander)');
update.SQL.Add('values(:lldno,:hbdno,:ddate,:cdepcode,:prono,:cmemo,:hander)');
update.Parameters.ParamByName('lldno').Value:=main_ado.fieldbyname('lldno').AsString;
...
update.Parameters.ParamByName('lldno').Value:=mainunit.username;
showmessage(update.SQL.text);//查看一下是否一一对应。
update.execsql;
mdejtod 2007-06-30
  • 打赏
  • 举报
回复
'''+main_ado.fieldbyname('lldno').AsString+''','+
'''+main_ado.fieldbyname('hbdno').AsString+''','+
'''+main_ado.fieldbyname('ddate').AsString+''','+
'''+main_ado.fieldbyname('cdepcode').AsString+''','+
'''+main_ado.fieldbyname('prono').AsString+''','+
'''+main_ado.fieldbyname('cmemo').AsString+''','+
'''+mainunit.username+''')');
IDWB 2007-06-30
  • 打赏
  • 举报
回复
用"可以吗
update.SQL.Add('insert into aaa_lld(lldno,hbdno,ddate,cdepcode,prono,cmemo,hander) values('+
''''+main_ado.fieldbyname('lldno').AsString+''''+','+
''''+main_ado.fieldbyname('hbdno').AsString+''''+','+
''''+main_ado.fieldbyname('ddate').AsString+''''+','+
''''+main_ado.fieldbyname('cdepcode').AsString+''''+',"'+
main_ado.fieldbyname('prono').AsString+'",'+
''''+main_ado.fieldbyname('cmemo').AsString+''''+','+
''''+mainunit.username+''''+')');

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧