掃描二維碼關注

首頁 APP開(kāi)發小(xiǎo)程序開(kāi)發 微信公衆号 網站建設 營銷推廣 經典案列 産品服務 關于我們

“學習(xí)不僅是掌握知識”

向書(shū)本學習(xí),還要向實踐學習(xí)、向生活學習(xí)。消化已有(yǒu)知識,
而且要力求有(yǒu)所發現、有(yǒu)所發明(míng)、有(yǒu)所創造

數據庫查詢中的(de)特殊字符的(de)問題

2019/3/26 12:38:44

數據庫查詢中的(de)特殊字符的(de)問題

 接到(dào)一個(gè)鑫冠獨立服務器(qì)客戶的(de)反饋,在進行(xíng)數據庫的(de)查詢時,出現報錯,無法讀(dú)取數據庫,經過我們的(de)檢查發現其修改了數據庫密碼,其中使用(yòng)了微軟數據庫不準許的(de)特殊字符:
  例如(rú)一個(gè)用(yòng)戶數據庫中查詢他(tā)的(de)用(yòng)戶名和(hé)他(tā)的(de)密碼,但(dàn)恰好該用(yòng)戶使用(yòng)的(de)名字和(hé)密碼中有(yǒu)特殊的(de)字符,例如(rú)單引号,“|”号,雙引号或者連字符“&”。
  例如(rú)他(tā)的(de)名字是1"test,密碼是A|&900
  這時當執行(xíng)以下的(de)查詢語句時,肯定會(huì)報錯:
SQL = "SELECT * FROM SecurityLevel WHERE UID="" & UserID & """
SQL = SQL & " AND PWD="" & Password & """
  因爲SQL将會(huì)是這樣:
SELECT * FROM SecurityLevel WHERE UID="1"test" AND PWD="A|&900"
  在SQL中,"|"爲分(fēn)割字段用(yòng)的(de),顯然會(huì)出錯了。現在提供下面的(de)幾個(gè)函數 專門用(yòng)來處理(lǐ)這些頭疼的(de)東西(xī):
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
  有(yǒu)了上(shàng)面幾個(gè)函數後,當在執行(xíng)一個(gè)sql前,請先使用(yòng)
SQL = "SELECT * FROM SecurityLevel WHERE UID="" & SQLFixup(UserID) & """
SQL = SQL & " AND PWD="" & SQLFixup(Password) & """

 


深圳市南山區南山街(jiē)道南海(hǎi)大(dà)道西(xī)桂廟路(lù)北陽光(guāng)華藝大(dà)廈1棟4F、4G-04

咨詢電話(huà):136 8237 6272
大(dà)客戶咨詢:139 0290 5075
業(yè)務QQ:195006118
技術(shù)QQ:179981967

更多可(kě)以了解的(de)信息

客戶案列
新聞資訊
資質榮譽
團隊風采
項目進度查詢

售前QQ咨詢
QQ溝通 項目QQ溝通

精銳軟件(jiàn)

Copyright© 2018-2023 深圳市無窮大軟件技術有限公司 All Rights Reserved. 京ICP證000000号 公安備案号:粵公網安備44030502009460号