数据库查询中的特殊字符的解决问题
<br> 在进行数据库的查询时,会经常遇到这样的情况:<br> 例如想在一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的字符,例如单引号,“|”号,双引号或者连字符“&”。<br> 例如他的名字是1"test,密码是A|&900<br> 这时当你执行以下的查询语句时,肯定会报错:<br> SQL = "SELECT * FROM SecurityLevel WHERE UID="" & UserID & """<br> SQL = SQL & " AND PWD="" & Password & """ <br> 因为你的SQL将会是这样:<br> SELECT * FROM SecurityLevel WHERE UID="1"test" AND PWD="A|&900" <br> 在SQL中,"|"为分割字段用的,显然会出错了。现在提供下面的几个函数 专门用来处理这些头疼的东西:<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> 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> Function FindFirstFixup(TextIn)<br> Dim Temp<br> Temp = ReplaceStr(TextIn, """, "" & chr(39) & "", 0)<br> FindFirstFixup = ReplaceStr(Temp, "|", "" & chr(124) & "", 0)<br> End Function <br> 有了上面几个函数后,当你在执行一个sql前,请先使用<br> SQL = "SELECT * FROM SecurityLevel WHERE UID="" & SQLFixup(UserID) & """<br> SQL = SQL & " AND PWD="" & SQLFixup(Password) & """<br> <
页:
[1]