• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

解决在执行数据库查询中的特殊字符的问题

发布: 2007-6-30 18:56 | 作者: admin | 来源: | 查看: 18次 | 进入软件测试论坛讨论

领测软件测试网 在进行数据库的查询时,会经常遇到这样的情况:
例如想在一个用户数据库中查询他的用户名和他的密码,
但恰好该用户使用的名字和密码中有特殊的字符,例如单引号,“|”号
双引号或者连字符“&”
例如他的名字是1@#test,密码是A|&900
这时当你执行以下的查询语句时,肯定会抱错:
SQL = "SELECT * FROM SecurityLevel WHERE UID=@#" & UserID & "@#"
SQL = SQL & " AND PWD=@#" & Password & "@#"
因为你的SQL将会是这样:
SELECT * FROM SecurityLevel WHERE UID=@#1@#test@#
AND PWD=@#A|&900@#
在SQL中,"|"为分割字段用的,显然会出错了。现在提供下面的几个函数
专门用来处理这些头疼的东西:

Function ReplaceStr (TextIn, ByVal SearchStr As String, _
ByVal Replacement As String, _
ByVal CompMode As Integer)
Dim WorkText As String, Pointer As Integer
If IsNull(TextIn) Then
ReplaceStr = Null
Else
WorkText = TextIn
Pointer = InStr(1, WorkText, SearchStr, CompMode)
Do While Pointer > 0
WorkText = Left(WorkText, Pointer - 1) & Replacement & _
Mid(WorkText, Pointer + Len(SearchStr))
Pointer = InStr(Pointer + Len(Replacement), WorkText, _
SearchStr, CompMode)
Loop
ReplaceStr = WorkText
End If
End Function

Function SQLFixup(TextIn)
SQLFixup = ReplaceStr(TextIn, "@#", "@#@#", 0)
End Function

Function JetSQLFixup(TextIn)
Dim Temp
Temp = ReplaceStr(TextIn, "@#", "@#@#", 0)
JetSQLFixup = ReplaceStr(Temp, "|", "@# & chr(124) & @#", 0)
End Function

Function FindFirstFixup(TextIn)
Dim Temp
Temp = ReplaceStr(TextIn, "@#", "@# & chr(39) & @#", 0)
FindFirstFixup = ReplaceStr(Temp, "|", "@# & chr(124) & @#", 0)
End Function

有了上面几个函数后,当你在执行一个sql前,请先使用
SQL = "SELECT * FROM SecurityLevel WHERE UID=@#" & SQLFixup(UserID) & "@#"
SQL = SQL & " AND PWD=@#" & SQLFixup(Password) & "@#"

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网