| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 545 人关注过本帖
标题:VB的函數問題..麻煩進來下.
只看楼主 加入收藏
akimoto
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-6-2
收藏
 问题点数:0 回复次数:3 
VB的函數問題..麻煩進來下.
处理Select语句中的单引号

在数据库应用中, 经常要动态生成 Select 语句,典型的情况:
SqlString = "Select * from myBas where Name = '" & Text1 & "'"
好啦, 问题出现了, 如果在录入的 Text1 中有一个单引号,结果是把 SqlString 发给数据库时, 将出错!

其实要做的防范很简单, 增加一个函数:

FUNCTION CheckString (s) as String
pos = InStr(s, "'")
While pos > 0
s = Mid(s, 1, pos) & "'" & Mid(s, pos + 1)
pos = InStr(pos + 2, s, "'")
Wend

CheckString="'" & s & "'"
END FUNCTION

以后在动态生成 Select 语句, 使用:
SqlString = "Select * from myBas where Name = " & CheckString(Text1)



現在比如上面的s為: s=abc'def

pos = InStr(s, "'")
While pos > 0
s = Mid(s, 1, pos) & "'" & Mid(s, pos + 1)
pos = InStr(pos + 2, s, "'")



那么pos=4吧.s=abc''def  ,注意中间是两个单引号..那么最后一句的pos=instr(pos+2,s,"'")是什么意思呢..?

pos=(6,s,"'") ..?结果是怎样的.?




麻烦会的朋友指教一下..
搜索更多相关主题的帖子: 数据库应用 单引号 Text1 where 动态 
2005-08-22 21:37
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 
其实就是把一个单引号换成两个,不需要那么麻烦的算法
FUNCTION CheckString (s) as String
    CheckString = Replace(s,"'","''")
END FUNCTION

天津网站建设 http://www./
2005-08-22 21:53
akimoto
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-6-2
收藏
得分:0 
把一個單引號換成兩個...有什麽作用呢..?

2005-08-23 09:55
longgen
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2004-10-9
收藏
得分:0 
这个是 SQL文的问题 名称如果为<En'g>  要是我写成 select * form 通讯录 where 名称='En'g' 肯定不会检索到的.
select * form 通讯录 where 名称='En''g'  这样才是正确的.
2005-09-27 01:30
快速回复:VB的函數問題..麻煩進來下.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015464 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved