ASP中执行数据库查询中的特殊字符的问题

数据|数据库|问题|执行

  在进行数据库的查询时,会经常遇到这样的情况:
  例如想在一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的字符,例如单引号,“|”号

双引号或者连字符“&”。

  例如他的名字是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) & "'"

时间: 2024-10-28 08:10:31

ASP中执行数据库查询中的特殊字符的问题的相关文章

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

解决在ASP中执行数据库查询中的特殊字符的问题 在进行数据库的查询时,会经常遇到这样的情况: 例如想在一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的字符,例如单引号,"|"号 双引号或者连字符"&". 例如他的名字是1'test,密码是A|&900 这时当你执行以下的查询语句时,肯定会报错: SQL = "SELECT * FROM SecurityLevel WHERE UID='" &

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

解决|数据|数据库|问题|执行 在进行数据库的查询时,会经常遇到这样的情况: 例如想在一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的字符,例如单引号,"|"号 双引号或者连字符"&". 例如他的名字是1'test,密码是A|&900 这时当你执行以下的查询语句时,肯定会报错: SQL = "SELECT * FROM SecurityLevel WHERE UID='" & UserID

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

在进行数据库的查询时,会经常遇到这样的情况:例如想在一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的字符,例如单引号,"|"号双引号或者连字符"&"例如他的名字是1'test,密码是A|&900这时当你执行以下的查询语句时,肯定会抱错:SQL = "SELECT * FROM SecurityLevel WHERE UID='" & UserID & "'"SQL

数据库查询中遭遇特殊字符导致问题的解决方法_数据库其它

数据库查询中的特殊字符的问题 在进行数据库的查询时,会经常遇到这样的情况:  例如想在一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的 字符,例如单引号,"|"号,双引号或者连字符"&".  例如他的名字是1"test,密码是A|&900  这时当你执行以下的查询语句时,肯定会报错:  SQL = "SELECT * FROM SecurityLevel WHERE UID=""

asp中,数据库查询无法显示

问题描述 asp中,数据库查询无法显示 1C <%@ LANGUAGE=""VBSCRIPT"" %><!--#include file=""conn.asp""--><%Id=Session(""LoginSuccess"")set rs = Server.CreateObject(""ADODB.recordset"&quo

sql-试图执行的查询中不包含作为聚合函数一部分的特定表达式

问题描述 试图执行的查询中不包含作为聚合函数一部分的特定表达式 SELECT SUM(XSJE / 1000) AS XSJE, SUM(SL) AS SL, LRRQ FROM MTGL_C_KPXX WHERE (LRRQ BETWEEN ? AND ?) sql语句于上,我想统计每天的销售金额总量和总数量,每天有多个销售金额,每个销售金额有一个时间,要统计一天的总和,group by 达不到我要的效果,然后就报错,不知道怎么改 解决方案 SELECT SUM(XSJE / 1000) AS

cursor-Android中SQLite数据库查询不到的问题,求大神帮忙

问题描述 Android中SQLite数据库查询不到的问题,求大神帮忙 private static String sql1="create table user( _id integer primary key autoincrement, name varchar(20), pwd varchar(20))"; private static String sql2="create table account_book("+ "_id integer p

c#-C#中数据库删除按钮中在下面update语句中显示数据库查询过于复杂

问题描述 C#中数据库删除按钮中在下面update语句中显示数据库查询过于复杂 string connstr = "Provider=Microsoft.Jet.OleDb.4.0;"; connstr += @"Data Source=GEARCNC.mdb"; OleDbConnection tempconn = null; try { if (MessageBox.Show("确定删除这一项吗?", "confirm Messag

sqlserver isnull在数据库查询中的应用_MsSql

isnull在数据库查询中的应用,特别是再语句连接的时候需要用到 比如连接时候,某个字段没有值但是又要左连接到其他表上 就会显示空, isnull可以判断是否是NULL,如果是给个默认值 isnull("字段名","默认的数据") SqlServer中的null值与IsNull函数NULL 值的三大特点,分别是:1)NULL值不参加统计:2)NULL值不进入计算表达式:3)不能与其它值进行比较. 所谓NULL值不参加统计 即 在使用统计函数时,凡是涉及到 NULL值