中单引号的两种处理技巧的
2021-09-06 04:01 来源:密山养生网
和数据库打交道要频繁地用到SQL语句,除非你是全部用控件绑定的方式,但采用控件绑定的方式存在着灵活性差、效率低、功能弱等等缺点。因此,大多数的程序员极少或较少用这种绑定的方式。而采用非绑定方式时许多程序员大都忽略了对单引号的特殊处理,一旦SQL语句的查询条件的变量有单引号出现,数据库引擎就会报错指出SQL语法不对,本人发现有两种方法可以解决和处理这种单引号的问题(以VB为例子)。 方法一:利用转义字符处理SQL语句。下面的函数可以在执行SQL语句前调用,执行处理后的结果即可产生正确的结
果。
Function ProcessStr(str As String)
Dim pos As Integer
Dim stedest As String
pos = InStr(str, \"\'\")
While pos 0
str = Mid(str, 1, pos) \"\'\" Mid(str, pos + 1)
pos = InStr(pos + 2, str, \"\'\")
Wend
ProcessStr = str
End Function
其中str参数是你的SQL字符串。函数一旦发现字符串中有单引号出现,就在前面补上一个单引号。
方法二:利用数据对象中的参数。可以利用MAND对象,把含有单引号的字符串传递给COMMAND,然后执行查
询等操作即可。
以上两种方法比较,方法一增加了系统处理时间,方法二简洁、高效,如果采用存储过程,然后再传递参数给存储过程,存储过程是预编译的,这样系统的效率更高。
下面就举例子加以说明。
新建一个项目,项目中有一个窗体(Form1),两个命令按钮,一个MSFlexGrid,名称分别为:Command1,
Command2,MSFlexGrid1,一个COMBOX(COMBO1),它的内容预先设定为\"Paolo\'\'f\"、\"Paolo\'f\"。Command1演示方法一,Command2演示方法二,MSFlexGrid1存储方法二查询(SELECT)结果。对于其他的SQL操作(INSERT、DELTER、UPDATAE)方法极为类似,笔者就不再赘述。例子中用到SQL SERVER中的PUBS数据库中的EMPLOYEE表,同时可以用SQL语法把其中两条记录中的FNAME改为\"Paolo\'\'f\"、\"Paolo\'f\"。 SQL语法如下:
update employee set fname=\" Paolo\'\'\'\'f\"
where emp_id=\'PMA42628M\'
update employee set fname=\" Paolo\'\'f\"
where emp_id=\'PMA42628M\'
程序如下:
首先把前面的函数加入。在窗体的通用中声明如下变量:
Dim cnn1 As nnection \'连接
Dim mycommand As mand \'命令
Dim rstByQuery As cordset \'结果集
Dim strCnn As String \'连接字符串
除了能快速清除体内堆积的有害代谢物 Private Sub Form_Load()
Set cnn1 = New nnection \'生成一个连接
strCnn = \"driver={SQL Server};\" _
\"server=ZYX_pc;uid=sa;pwd=PCDC;database=pubs\" \'
没有系统数据源使用连接字符串
\'strCnn = \"DSN=mydsn;UID=sa;PWD=;\"
\'DATABASE=pubs;Driver={SQL Server};SERVER=gzl_pc\" \'
如果系统数据源MYDSN指向PUBS数据库,也可以这样用
en strCnn, , , 0 \'打开连接
End Sub
Private Sub Command1_Click() \'演示字符处理
Dim i As Integer
Dim j As Integer
Set parm = New rameter
Set mycommand = New mand
Dim str As String
str = xt
str = ProcessStr (str)
tiveConnection = cnn1 \'
指定该command 的当前活动连接
mandText = \" select * from
employee where fname = \'\" str \"\'\"
mandType = adCmdText \'表明command 类型
Set rstByQuery = New cordset
Set rstByQuery = ecute()
i = 0
Do While Not F
i = i + 1 \' i 中保存记录个数
veNext
Loop
ws = i + 1 \'动态设置MSFlexGrid的行和列
ls = unt + 1
w = 0
For i = 0 To unt - 1
l = i + 1
xt = em(i).Name
Next \'设置第一行的标题,用域名填充
i = 0
\'Set rstByQuery = ecute()
query
Do While Not F
i = i + 1
w = i \'确定行
For j = 0 To unt - 1
l = j + 1
xt = rstByQuery(j) \'添充所有的列
Next
veNext
Loop \'这个循环用来填充MSFlexGrid的内容
End Sub
Private Sub Command2_Click()\'参数方法
Dim i As Integer
Dim j As Integer
Set parm = New rameter
Set mycommand = New mand
\' parm_ = \"name1\" this line can be ommited
pe = adChar \'参数类型
ze = 10 \'参数长度
rection = adParamInput \'参数方向,输入或输出
lue = xt \'参数的值
pend parm \'加入参数
tiveConnection = cnn1 \'
指定该command 的当前活动连接
mandText = \" select *
from employee where fname =? \"
mandType = adCmdText \'表明command 类型
Set rstByQuery = New cordset
Set rstByQuery = ecute()
i = 0
Do While Not F
i = i + 1 \' i 中保存记录个数
veNext
Loop
ws = i + 1 \'动态设置MSFlexGrid的行和列
ls = unt + 1
w = 0
For i = 0 To unt - 1
l = i + 1
xt = em(i).Name
Next \'设置第一行的标题,用域名填充
i = 0
query
Do While Not F
i = i + 1
w = i \'确定行
For j = 0 To unt - 1
l = j + 1
xt = rstByQuery(j) \'添充所有的列
Next
veNext
Loop \'这个循环用来填充MSFlexGrid的内容
End Sub
查询部分可以用存储过程以提高处理效率,减低络流量。本程序在NT WORKSTATION 4.0 SP4、SQL SERVER 7.0 上调试通过。
查看本文来源
德州医院白癜风成都市癫痫医院
吃什么可以止泻
- 上一篇:中加密数据须知呢
- 下一篇:中处理空值时涉及的三问
-
随时成为TVB“亲生女”!30岁人气缪斯宣布:与旧经理人公司约满
本文由 港喜剧喜剧透王为 编辑部 轩逸王为 作者原创/刊登请求写明 大姐30岁TVB港女雅典娜简淑儿,今日现身铜锣湾为首饰店受聘揭幕仪式郑裕玲,早先她透露自己仍然与原先谢霆锋新公司大约他年丧失自由身,所...
-
袁泉女儿正面照曝光,深眼窝似妈妈翻版,才9岁就是高冷气质缪斯
袁泉是影视圈少有的备受瞩目,出有道多年之前零绯闻,几位时候凭借《小鱼儿与花无缺》里的苏樱饰演者,惊艳了许多人。而以前人到中会年的她,出有演《我的前半生》再度圈粉无数。努力如此为难,袁泉和冬...
-
你就不要这样一来言爱,不要随意让爱潮泛滥
你就绝不就会轻易言爱,绝不就会可任意让爱潮洪水,绝不就会将人类所最值得注意的无意识与自私冠冕堂皇地裹以唯美的外表,去侵害、冒犯那圣洁而又正直的爱。这份爱人只能悬于犹如的时髦与孤独,既并未让...
-
我拼命的在高呼你却装做看不见
我拚命的在呼喊你却装认真看不到,时长的可怜路却从末平坦,昨天泪点滴成片脑海中无时不现,不知道你的心里我是否是浮云一般,不只想在增加伤感这是我自找难堪任泪水滴滴有如… 若爱恋,就劝相惜;若相...
-
大S结婚照曝光!具俊晔一本正经哑肩太僵硬,她笑得欢快却太端着
大s和具俊晔的再婚可谓相互合作共赢,尤其是对具俊晔来说,随即通过再婚获得关注,彻底挽救了她的事业演进。他们的婚纱照首次揭露。他们没有选择近现代或韩国的有别于衣着,而是选择了西式的经典西装和...
-
刚刚,上海常务副市长致歉!首次,23286>20416!吴尊友:动态清零≠零感染≠封控!警方通知变质
可能:广州证券报示范 祖国日报、中的国新闻网网、广州释出、上观新闻网 长文节录 4月底18日,广州“康复休养+中止医学注意到”首次大约“增设英美肺癌+的人但会”。 现在(4月底19日)上午出席的广州市霍乱...