与数据库打交道要频繁地用到sql语句,除非你是全部用控件绑定的方式,但采用控件绑定的方式存在着灵活性差.效率低.功能弱等等缺点.因此,大多数的程序员极少或较少用这种绑定的方式.而采用非绑定方式时许多程序员大都忽略了对单引号的特殊处理,一旦sql语句的查询条件的变量有单引号出现,数据库引擎就会报错指出sql语法不对,本人发现有两种方法可以解决与处理这种单引号的问题(以vb为例子).
方法一:利用转义字符处理sql语句.下面的函数可以在执行sql语句前调用,执行处理后的结果即可产生正确的结
function processstr(str as string) 【程序编程相关:5种方法逃过防火墙控制系统的研究】
果. 【推荐阅读:Cisco四种类型的防火墙技术汇总】dim stedest as string 【扩展信息:关于网络防火墙防范溢出策略分析】dim pos as integerpos = instr(str, "")while pos > 0str = mid(str, 1, pos) & "" & mid(str, pos + 1)pos = instr(pos + 2, str, "")wendprocessstr = strend function其中str参数是你的sql字符串.函数一旦发现字符串中有单引号出现,就在前面补上一个单引号.
方法二:利用数据对象中的参数.可以利用adodb.command对象,把含有单引号的字符串传递给command,然后执行查
询等操作即可.以上两种方法比较,方法一增加了系统处理时间,方法二简洁.高效,如果采用存储过程,然后再传递参数给存储过程,存储过程是预编译的,这样系统的效率更高.
下面就举例子加以说明.
新建一个项目,项目中有一个窗体(form1),两个命令按钮,一个msflexgrid,名称分别为:command1,
command2,msflexgrid1,一个combox(combo1),它的内容预先设定为"paolof"."paolof".command1演示方法一,command2演示方法二,msflexgrid1存储方法二查询(select)结果.对于其他的sql操作(insert.delter.updatae)方法极为类似,笔者就不再赘述.例子中用到sql server中的pubs数据库中的employee表,同时可以用sql语法把其中两条记录中的fname改为"paolof"."paolof". sql语法如下: ... 下一页