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

在 VB&VBScript中访问数据库的时候最常用的是以下两种语句:
1、选择查询(select),返回结果集;
2、动作查询(update、insert、delete等),无结果集。
无论哪一种语句,经常需要根据用户的输入来构造符合 SQL语法的字符串,提交给连结对象或结果集对象来执行(open或 execute方法),在  VB&VBScript中,标记字符串变量内容用双引号,如:strSql="select * from UserList"
在组织字符串的时候要考虑将用户输入的单引号替换成两个连续的单引号,此时要用到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函数。

 

 from:asp学习网/title:关于SQL语句中的引号问题(VB&VBScript)/ time:2006-4-7 2:39:53

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值