数据库查询中遭遇特殊字符导致问题的解决方法
<p>数据库查询中的特殊字符的问题<br>
在进行数据库的查询时,会经常遇到这样的情况: <br>
例如想在一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的<br>
字符,例如单引号,“|”号,双引号或者连字符“&”。 <br>
例如他的名字是1"test,密码是A|&900 <br>
这时当你执行以下的查询语句时,肯定会报错: <br><br>
SQL = "SELECT * FROM SecurityLevel WHERE UID="" & UserID & """ <br>
SQL = SQL & " AND PWD="" & Password & """ <br>
因为你的SQL将会是这样: <br><br>
SELECT * FROM SecurityLevel WHERE UID="1"test" AND PWD="A|&900" <br><br>
在SQL中,"|"为分割字段用的,显然会出错了。现在提供下面的几个函数专门用来处理这些头疼的东西数据库 转义字符:</p>
<p class="codetitle">
<span><u>复制代码</u></span> 代码如下:</p>
<p class="codebody">
<br>
Function ReplaceStr (TextIn, ByVal SearchStr As String, _<br>
ByVal Replacement As String, _<br>
ByVal CompMode As Integer)<br>
Dim WorkText As String, Pointer As Integer<br>
If IsNull(TextIn) Then<br>
ReplaceStr = Null<br>
Else<br>
WorkText = TextIn<br>
Pointer = InStr(1, WorkText, SearchStr, CompMode)<br>
Do While Pointer > 0<br>
WorkText = Left(WorkText, Pointer - 1) & Replacement & _<br>
Mid(WorkText, Pointer + Len(SearchStr))<br>
Pointer = InStr(Pointer + Len(Replacement), WorkText, SearchStr, CompMode)<br>
Loop<br>
ReplaceStr = WorkText<br>
End If<br>
End Function<br><br>
Function SQLFixup(TextIn)<br>
SQLFixup = ReplaceStr(TextIn, """, """", 0)<br>
End Function<br>
Function JetSQLFixup(TextIn)<br>
Dim Temp<br>
Temp = ReplaceStr(TextIn, """, """", 0)<br>
JetSQLFixup = ReplaceStr(Temp, "|", "" & chr(124) & "", 0)<br>
End Function<br><br>
Function FindFirstFixup(TextIn)<br>
Dim Temp<br>
Temp = ReplaceStr(TextIn, """, "" & chr(39) & "", 0)<br>
FindFirstFixup = ReplaceStr(Temp, "|", "" & chr(124) & "", 0)<br>
End Function</p>
<p>
<br>
有了上面几个函数后,当你在执行一个sql前,请先使用 <br><br>
SQL = "SELECT * FROM SecurityLevel WHERE UID="" & SQLFixup(UserID) & """ <br>
SQL = SQL & " AND PWD="" & SQLFixup(Password) & """ </p>
頁:
[1]