网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 网站开发-> 其它-> 关于SQL语句中的引号问题(VB&VBScript)

关于SQL语句中的引号问题(VB&VBScript)
作者:佚名 来源:InterNet 加入时间:2005-4-4
相关文章
  • SQL排名与交叉
  • 如何用SQL数据支持XML
  • 标准查询语法的SQL语句
  • 如何让你的SQL运行得更快
  • 精妙SQL语句
  • ASP.NET中如何防范SQL注入式攻击
  • SQL的基本操作
  • 相关书籍:
  • asp与sql网页数据库程序设计
  • ASP与SQL_Server网站架设
  • Delphi8.Net与SQLServer2000的实际应用
  • 自学 PHP、MySQL和Apache
  • 轻松搞定 SQL Server 2000程序设计
  • SQL Server 2000菜鸟进阶
  • SQL Server 2000 看图教程
  • SQL Server 2000 开发者指南
  • SQL Server 2000 超级管理手冊
  • PostgreSQL 实用实例参考
  • 最近在网上看到不少网友因为在写 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函数。


    [文章录入员:nancy]

    相关文章
  • SQL排名与交叉
  • 如何用SQL数据支持XML
  • 标准查询语法的SQL语句
  • 如何让你的SQL运行得更快
  • 精妙SQL语句
  • ASP.NET中如何防范SQL注入式攻击
  • SQL的基本操作
  • 相关书籍:
  • asp与sql网页数据库程序设计
  • ASP与SQL_Server网站架设
  • Delphi8.Net与SQLServer2000的实际应用
  • 自学 PHP、MySQL和Apache
  • 轻松搞定 SQL Server 2000程序设计
  • SQL Server 2000菜鸟进阶
  • SQL Server 2000 看图教程
  • SQL Server 2000 开发者指南
  • SQL Server 2000 超级管理手冊
  • PostgreSQL 实用实例参考
  • 本站推荐内容

    近期主机类热搜关键词:
    美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

    其它
    ASP/ASP.NET
    PHP技术
    JSP技术
    XML技术
    CGI/PERL
    WEB服务器
    WordPress专题
    其它
    电脑教程阅读排行
    ·VBScript 函数集
    ·关于SQL语句中的引号问题(VB...
    ·网站建设步骤
    ·网上建站论坛的选择和安装(菜鸟版...
    ·用ASP动态生成JavaScri...
    ·Apache+PHP+MySQL...
    ·用VBScript实现对Wind...
    ·VBScript和JavaScr...
    ·在javascript中调用vb...
    ·一个简单的javascript菜...