| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1146 人关注过本帖
标题:数据库查询中的特殊字符的问题
只看楼主 加入收藏
寒星
Rank: 1
等 级:新手上路
帖 子:455
专家分:0
注 册:2004-6-7
收藏
 问题点数:0 回复次数:3 
数据库查询中的特殊字符的问题

在进行数据库的查询时,会经常遇到这样的情况:   例如想在一个用户数据库中查询他的用户名和他的密码,但恰好该用户使用的名字和密码中有特殊的字符,例如单引号,“|”号,双引号或者连字符“&”。   例如他的名字是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) & """

[此贴子已经被作者于2004-06-12 09:09:21编辑过]

搜索更多相关主题的帖子: 数据库 字符 查询 
2004-06-12 09:06
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 

楼主,你说的 “|” “&” 符号我在使用中没发现有什么问题,呵呵

其此,你的SQL语句里字符串为什么是用 双引号 来分隔?在Access数据库的SQL语句里可以使用双引号,但是SQL Server或其它的数据库不支持 双引号 分隔,所以最好用单引号。

我的拙见,见笑了。。。


天津网站建设 http://www./
2004-06-12 11:57
寒星
Rank: 1
等 级:新手上路
帖 子:455
专家分:0
注 册:2004-6-7
收藏
得分:0 
sql里用单引号

http://www. 版主位置空缺
2004-06-12 16:21
regedit
Rank: 5Rank: 5
等 级:贵宾
威 望:19
帖 子:950
专家分:0
注 册:2004-6-8
收藏
得分:0 
单引号……

最新作品:百货品牌商品资讯第一门户([url]http://www./[/url]),欢迎交流
2004-06-13 08:42
快速回复:数据库查询中的特殊字符的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015964 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved