关于SQL语句中的引号问题(VB&VBScript)
2006-07-25 10:19
453 查看
关于SQL语句中的引号问题(VB&VBScript) |
[align=center]作者:佚名 来源:InterNet 加入时间:2005-4-4 [/align] |
![]() 最近在网上看到不少网友因为在写 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函数。 |
相关文章推荐
- 关于SQL语句中的引号问题(VB&VBScript)
- 关于SQL语句中的双引号、单引号和&-------asp.net
- 关于SQL语句中的双引号、单引号和&
- 关于SQL语句中的双引号、单引号和&
- 关于SQL语句中的双引号、单引号和&
- 关于SQL语句中的双引号、单引号和&
- 关于SQL语句中的双引号、单引号和&
- 关于sqlite3的C接口中的sql语句的查找关键字需要带上引号的问题
- 关于sql语句中的单引号(‘ ) 和双引号(“) 的处理问题?
- 关于mysql 执行批量的sql 语句问题:&allowMultiQueries=true
- 关于统计的一个sql问题,使用动态sql语句实现。
- 应对sql语句中出现的引号问题
- 关于SQL语句的问题
- vb中sql语句的单引号和双引号的用法
- 关于SQL语句和变量的组合问题
- 关于phpcms v9的get标签里面的sql 语句limit无效问题的解决方法
- 关于No Dialect mapping for JDBC type :-9 hibernate执行原生sql语句问题
- 关于Python操作Mysql数据库时SQL语句的格式问题(mysql语句中的双引号问题)
- Sql server 数据库中,纯SQL语句查询、执行 单引号问题。
- 关于SQL中 动态执行SQL语句并且获得动态SQL语句输出参数值的问题