各位大虾,我有以下语句
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')
我该怎么改呀
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')
我该怎么改呀
解决方案 »
- 在Delphi 中运用存储过程 错误为必须说明标识符‘我的存储过程名’
- 分析网络入侵检测系统安全,推荐一片好文章
- 熟悉STRING函数的前辈帮帮我。。。
- 100分提问,如何将一单机版得软件改为B/S结构得?
- access连接查询问题
- Qreport打印的问题
- 请教mscomm的使用方法、属性资料
- 有关F1book6的问题:如果焦点没有离开正在编辑的单元格,则其中的内容没有被承认,怎么解决这个问题?
- 请教:调试中如何查看某些变量的值.
- 老问题clientdataset/midas模糊过滤中文
- 字符串怎么转换成进制(如朴韙?緾圜?鮂芽窥枯夻V0)
- delphi如何访问Internet上的Oracle数据库
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('hbdno').AsString+''','+
'''+main_ado.fieldbyname('ddate').AsString+''','+
'''+main_ado.fieldbyname('cdepcode').AsString+''','+
'''+main_ado.fieldbyname('prono').AsString+''','+
'''+main_ado.fieldbyname('cmemo').AsString+''','+
'''+mainunit.username+''')');
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;
以下例子
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;
这样不管值包括什么非法字符都没有问题,还能阻止注入式攻击
其中的''FCDD0706005','FCDD0706021''为什么有两个撇号??
是不是这里的问题.