zoukankan      html  css  js  c++  java
  • ASP中使用SQL时的数据类型转换

     

    1 ASP中对数据库的访问技术
    ASP(Active Server Pages)是标准HTML的一种变体,ASP网页在输送到客户端浏览器之前,先在服务器上执行,得到标准HTML代码,再输送到浏览器上显示出来,这意味着WEB开发者可以开发与服务器交互的网页,使网页能根据访问者提供的条件反馈最新的实时的信息。而这些技术的实现与数据库是分不开的,数据库是对外开放网站与企业内部管理系统间的数据交换中心。在ASP网页中,对于数据库的操作是通过ASP内置的ADO(ActiveX Data Object)对象结合SQL语言来实现的。当然,ADO对象也可以通过Recordset对象来操作数据库,但总的来说在使用上不大方便。要使用SQL语言来对数据库进行操作,首先必须建立一个数据库连接对象。下面的例子就是显示了生成一个Connection对象CnnDB对网页所在目录的数据库board.mdb进行引用。
    Set cnnDB=Server.CreateObject("ADODB.Connection")
    StrCon= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
      Server.MapPath("board.mdb")
    CnnDB.Open StrCon
    打开数据库后,可以利用Recordset对象的Open方法执行SQL语言的SELECT语句。然后可以通过Recordset对象对返回的记录集进行操作。
    建立Recordset(记录集)对象,可由下条语句完成:
    Set rstObj=Server.CreateObject(“ADODB.Recordset”)
    当利用SQL语言对数据库中的数据进行编辑时,由于SQL语法并不会传回记录集,所以不需要通过Recordset对象变量引用该记录集,可以直接通过Connection对象的Execute方法执行SQL命令。现在有关于SQL语言用法的书籍和文章很多,若读者有兴趣可以查找相应的资料,在此本文就不再多介绍了。

    2 一个ASP的实例
    为了说明在ASP中如何利用SQL语言来访问数据库以及如何处理不同数据类型间的转换问题,做如下实例。

    首先用ACESS创建一个包含表customer的数据库board.mdb,表customer的包含5个字段:username(字符串)、sex(字符串)、age(数值型)、birthday(日期型)和email(字符串)。则我们可以建立ASP代码board.asp如下:
    <HTML>
    <HEAD>客户信息资料</HEAD>
    <BODY>
    <%if isempty(request.form) then %>
    <!--生成用户界面-->
    <form method=post action=board.asp>
     <P align=center><FONT size=6 face=楷体_GB2312><STRONG>客户信息资料</STRONG></FONT></P>
     <P align=left>您的姓名: <input name=text1 ></P>
     <P align=left>您的性别: <input name=radio1 value="男" type=radio checked>男 &nbsp;&nbsp;&nbsp;&nbsp;<input name=radio2 value="女" type=radio>女</P>
     <P align=left>您的年龄: <input name=text2 ></P>
     <P align=left>您的出生日期:<input name=text3 ></P>
    <P align=left>您的E-mail:<input name=text4></P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name=submit1 type=submit value=提交></P>
    </form>
    <%else
    <!--处理表单的提交结果-->
    Set cnnDB = Server.CreateObject("ADODB.Connection")
    strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
      Server.MapPath("board.mdb")
    cnnDB.Open strCon
    cnnDB.Excecute strsql
    %>
    <FONT size=6>谢谢您的留言!</FONT>
    <%
    cnnDB.Close
    set cnnDB=nothing
    end if%>
    </BODY>
    </HTML>
    在这里通过连接对象cnnDB的Excecute方法来完成SQL语句的执行。SQL语句通过字符串变量strsql作为参数传递给Excecute,在这里就涉及到不同数据类型的转换的问题。为了说清楚这个问题,我们分为常量和变量两种情况。

    3 常量参数的传递
    假设我们要向数据库增加一条记录:张三,男,22,78/02/23,zs@163.net。则变量strsql="insert into board(username,sex,age,birthday,email) values(‘张三’,’男’,22,#78/02/23#)"。这里我们看到:字符串用单引号括起来,日期用#号括起来,而数值型不需要定界符。但是我们应该注意:
    1) 日期型,年月日之间可以用“/”或“-”隔开,它们之间的顺序可以是:年月日、月日年和日月年三种。日期型的定界符可以用“#”或“’”。
    2) 数值型常量也可以用定界符“’”括起来。
    根据上面两个规则,下面这条赋值语句也是正确的。
    strsql="insert into board(username,sex,age,birthday,email) values(‘张三’,’男’,’22’,’78-02-23’)"

    4 变量的参数传递
    (1)ACESS数据库中的字段是字符串,则有以下两种情况值得注意:
    a.如果表单提交的数据也是字符串则较简单。如对字符串字段username,对应表单中的对象text1,而text1的返回值为字符串,则插入用户名可写成:
    strsql="insert into board(username) values(‘" & request("text1") & "’)"
    这里,变量返回的值必须用单引号括起来,表明是字符串。
    b.如果表单提交的数据是数值型时,有两种写法。如对字符串字符型字段 sex,对应表单中的radio1对象,而radio1对象返回的是数值(男为0,女为1),下面两种写法均可:
    strsql="insert into board(sex) values(‘" & request("radio1") & "’)"
    strsql="insert into board(sex) values(" & request("radio1") & ")"
    即:数值可以用“’”作为定界符,也可以没有定界符。
    (2)ACESS数据库中的字段是数值型
    如board表中的字段age的数据类型为数值型,而此时在表单中对应的text2对象的返回值为字符串,则:
    正确写法:strsql="insert into board(age) values(" & request("text2") & ")"
    错误写法:strsql="insert into board(age) values(‘" & request("text2") & "’)"
    若将board表中的字段sex的数据类型改为数值型,对应的radio1对象的返回值也是数值型,则radio1的返回值可加单引号也可不加,下面两种写法均可:
    strsql="insert into board(sex) values(‘" & request("radio1") & "’)"
    strsql="insert into board(sex) values(" & request("radio1") & ")"
    注:以上代码均在windows 2000下调试通过。

    5 结论
    以上通过实例说明了在ASP中通过SQL访问数据库的方法,然后主要介绍了字符型、数值型和日期型在使用SQL中的类型转换的方法及注意事项。这些也是在写ASP脚本时经常遇到的问题,值得引起注意。

  • 相关阅读:
    Python基础第三天——变量、列表、元组、字典
    Django学习第二天
    开篇:鸡汤
    Python常用的字符串方法总结
    Django学习第一天
    Python基础第二天——if判断、while循环、for循环、Pycharm的使用、python字符串
    Python基础第一天——编程的概念、python的介绍与安装、python的变量、python的运算符
    计算机英语单词记录
    亿图画流程图的小技巧——自定义模板
    sysbench介绍
  • 原文地址:https://www.cnblogs.com/yeye518/p/2231804.html
Copyright © 2011-2022 走看看