网络编程
位置:首页>> 网络编程>> Asp编程>> 解决ASP执行DB查询中的特殊字符问题

解决ASP执行DB查询中的特殊字符问题

作者:csbq  发布时间:2008-09-02 12:16:00 

标签:查询,字符,sql

在进行数据库的查询时,会经常遇到这样的情况:

例如想在一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的字符,例如单引号,“|”号,双引号或者连字符“&”。
  例如他的名字是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) & "’" 
0
投稿

猜你喜欢

  • XML是一个精简的SGML,它将SGML的丰富功能与HTML的易用性结合到Web的应用中。XML保留了SGML的可扩展功能,这使XML从根本
  • 为什么我把自己机子上的数据库备份文件往另一台机子上还原不成功?可能是你在Restore的对话框中选项不正确。Restore 有三个选项,分别
  • HTML与CSS在Flash中的应用:不小心看到同事Den在弄个小东西:在Flash里使用HTML和CSS,代码是这样:var m
  • 最近被“模块化”缠身,又是文章又是PPT的,被逼着想了很多相关的东西。整理下我这段时间对于“模块化”的思考,大多都是我自己从事页面重构这份工
  • 一:文字加粗 倾斜的代码文字加粗的代码是: <b>你好</b>文字倾斜的代码是: <i>你好!</
  • 这段后门代码可以隐藏在asp文件中,大家可以搜索一些特点的关键字,查看文件的修改日期,看看是不是有如下的代码。<%if re
  • 大部分情况下,这种动态生成的sql查询语句写法如下: 代码如下:select A表.字段1,A表.字段2,B表.字段返回,C表.字段返回 f
  • a1="sp2=20;sp1=34;" a2="sp3=2;sp2=3;sp1=4;" 两组字符串数
  •   我们网站的静态资源(css、js和背景图片)和web应用程序是分开部署的,几乎所有的静态资源都部署在同一个应用下。最开始的网站
  • 刚才要说的是这几天亲身体验了一下ebay的AIR感觉挺不错的,无论从界面,交互,功能上都感觉挺好的。关于topic中的“剑走偏锋”是因为我认
  • jquery有一个插件叫Timer,很有意思,咱来实现一个简版的yui3的node timer。但还是应当首先交代下yui3的node扩展的
  •  <input name="a" type="checkbox"
  • 用采集程序的优点有:无须维护网站,因为采集程序中的数据来自其他网站,它将随着该网站的更新而更新;可以节省服务器资源,一般采集程序就几个文件,
  • css usage是一个基于firebug的firefox扩展,可以用来查看页面中的CSS的使用情况,可以清楚的查看css文件中所有的规则在
  • 我们都知道在9i之前,要想获得建表和索引的语句是一件很麻烦的事。我们可以通过export with rows=no来得到,但它的输出因为格式
  • 在大型商业应用中,数据的异地容灾备份十分重要,也必不可少。笔者根据自己的实践经验,设计了一套简洁地实现异地数据自动备份的方法,可供数据库管理
  • 网页的圆角处理,其实最开始的九宫格的表格处理是挺方便的,只是现在都不用表格布局了,自然就被非法取缔了。呵呵。微软的有VML画圆角,由于只是它
  • 介绍 IIRF是一款开源的重写URL过滤器,类似于Apache的URL重写,基于VC8.0(可以用Visual Studio200
  •    这个代表显示宽度整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系
  • 最近,就“尊重”一词,个人小有感概。也许跟我说“尊重”一词的同事并不是这么想的,但我反思了一下自己,作为一名设计师,确实存在这些疑问(不足之
手机版 网络编程 asp之家 www.aspxhome.com