电脑教程中文网
首页  动态网站建设学习 程序  笑话  论坛 娱乐  交友 ADSL  峄城  成功者
中文名:电脑教程中文网,收集了大量的电脑教程! 编程技术文档 游戏开发 笑话站暂时关闭 设为首页
网页设计 HTML | Dreamweaver | CSS | Firework | FrontPage WEB开发 ASP | JSP | PHP | .NET | CGI | JS | VBS | XML | IIS6 | Apache | PWS
程序设计 Java | C++ |VC++ | C# | Delphi | VB | C语言 | 汇编 | Pascal | Perl 数据库 MSSQL | MySQL | Access | VF | Oracle | DB2 | SYBASE |
办公软件 Word | Excel | WPS | PowerPoint 动画平面 Photoshop | ACDSee | 3Dmax | Flash | Coreldraw |
操作系统 Windows 2000 | Windows XP | Windows 2003 | SCO Unix | Windows Vista | unix、Linux | 综合| 服务器 | 系统安全| 黑客技术
其  他 UltraDev | DOS | UML | PWS | Powerbuilder | 开发心得 | 设计理念 | 病毒库 | 其他 | LightTPD (分类排序给您带来不便请谅解)
推  荐: Java文档500篇》《ASP.NET与相关数据库技术高级指南》《TC图形函数详解》《C函数速查手册》《C语言编程宝典之一》《MFC深入浅出》《黑客零起点》《VC++ 编程指南》《JScript 用户指南》 《CSS教程宝典》《Microsoft Jet SQL 参考》《delphi技巧集合》《MySQL 4.1.0 中文参考手册》《MySQL中文手册
【导航】 您现在的位置 : 首页 - VBS教程 - 《VBS编程 - 实用技术文档》- SQL语句中的引号问题(VB&VBScript)

SQL语句中的引号问题(VB&VBScript)

日期:2005-8-19 17:01:59 作者:佚名 人气:     来源:网络





最近在网上看到不少网友因为在写 SQL语句时因为引号引起的问题,我在刚开始用VB的
时候也经常犯这样或那样的错误,这次将使用的经验写出来与大家共享。

* 举例时以 VB6.0为依据;
* VB与VBScript不同的地方将分别说明;
* 数据库连结用 ADO。

要点:
在 VB&VBScript中,标记字符串变量内容用双引号,用两个连续的双引号表示字符串中
的双引号;
在 SQL语法中,标记字符串变量内容用单引号,用两个连续的单引号表示字符串中的单
引号。

在 VB&VBScript中访问数据库的时候最常用的是以下两种语句:
1、选择查询(select),返回结果集;
2、动作查询(update、insert、delete等),无结果集。

无论哪一种语句,经常需要根据用户的输入来构造符合 SQL语法的字符串,提交给连结
对象或结果集对象来执行(open或 execute方法),在 VB&VBScript中,标记字符串变量内
容用双引号,如
strSql="select * from UserList"
在 SQL语法中,标记字符串变量内容用单引号,如:
select * from UserList where UserName='MouseFly'

如果程序的窗口(浏览器的页面)上有两个文本框用于让用户输入登记注册的用户信息
或者是查询条件,假设用户输入了“MouseFly”、“1234”,需要登记到数据库的一个用户
注册表 UserList中,则SQL字符串应如下组织:
strSql="insert into UserList (UserName,Password) values (" & _
"'" & me.txtUserName.text & "'," & _
"'" & me.txtPassword.text & "')"
生成的结果为:
insert into UserList (UserName,Password) values ('MouseFly','1234')
但是如果用户输入中包含了单引号,如“12'3”,按照上面的组织方法则为:
insert into UserList (UserName,Password) values ('MouseFly','12'3')
这时再执行的时候,会提示 SQL语法错误,原因就在于“12'3”中的单引号,由于在 SQL语
法中,标记字符串变量内容用单引号,因此“'12'3'”无法被正确识别,所以在组织字符串
的时候要考虑将用户输入的单引号替换成两个连续的单引号,此时要用到Replace函数:
strSql="insert into UserList (UserName,Password) values (" & _
"'" & replace(me.txtUserName.text,"'","''") & "'," & _
"'" & replace(me.txtPassword.text,"'","''") & "')"
结果为:
insert into UserList (UserName,Password) values ('MouseFly','12''3')
如果使用的是VBScript则me.txtUserName.text和me.txtPassword.text要换成相应的浏览器
提交的内容,如request.form("UserName")和request.form("Password")。
如果赋值的字段类型是数字型的,则要去掉字符串两端的单引号,假设Password字段是
数值型,并且用户输入的是“1234”,则(此处略去数字输入校验):
strSql="insert into UserList (UserName,Password) values (" & _
"'" & me.txtUserName.text & "'," & _
me.txtPassword.text & ")"
生成的结果为:
insert into UserList (UserName,Password) values ('MouseFly',1234)

如果字段类型是日期型,在 ADO中和处理字符串差不多,只不过要注意日期型字段的格
式,最好在组织 SQL字符串的时候对日期进行格式化保证年份是4位,如:
strSql="insert into UserList (UserName,Password,BirthDay) values (" & _
"'" & me.txtUserName.text & "'," & _
me.txtPassword.text & "," & _
"'" & format(me.txtBirth.text,"yyyy-mm-dd") & "')"
生成的结果为:
insert into UserList (UserName,Password,BirthDay) values
('MouseFly',1234,'1975-01-15')
如果使用的是VBScript,对日期进行格式化使用FormatDatetime函数。

 
转自CLDE.NET


本文由CLDE.NET原创或整理(收集),如您需转载,请保留一下链接,谢谢!


下一篇:Email 炸弹 vbscript 版
※视频教程※
ASP入门到精通视频教程
西安电科大JSP视频教程
photoshop cs2视频教程
flash动画设计师视频教程
Dreamweaver视频教程
VB从入门到精通视频教程
 
 


网站首页 - 友情链接 - 公司简介 - 联系方式 - 广告投放 - 客户服务 - 错误报告 - 免责声明 - About us
CLDE.NET电脑教程中文网版权所有 未经许可禁止镜象和复制本站资料 MSN:CLDE_NET@hotmail.com
技术支持:CLDE.NET信息中心 鲁ICP备05039940号 友情链接QQ:784079(隐)