ASP中使用SQL时的数据类型转换

原创 2001年05月06日 10:55:00

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脚本时经常遇到的问题,值得引起注意。

 

数据库SQL中的数据类型转换

oracle有三种最基本的数据类型,即字符型、数值型、日期型。 (注意需要起别名的地方要起别名) oracle提供的单行函数中,针对不同的数据类型,提供大量实用的函数,同时提供一系列数据类型转换函数...
  • dcrose
  • dcrose
  • 2017年09月28日 09:01
  • 618

ASP函数 数据类型转换函数 强制转换

每个函数都可以强制将一个表达式转换成某种特定数据类型。语法CBool(expression)CByte(expression)CCur(expression)CDate(expression)CDbl...
  • GUOSHANGFENG
  • GUOSHANGFENG
  • 2011年07月10日 11:45
  • 572

ASP中使用SQL-select语句

 (转载自:http://art.21e.cn) 五花八门的SQL产品多得要命,或许你早顾不得其它甩开袖子就动手干了。但你要同时采用ASP和SQL的话就可能会头晕。MySQL、SQL Server和m...
  • KosonLau34
  • KosonLau34
  • 2006年11月06日 13:59
  • 1976

在asp中实现sql语句参数化查询

var conn = Server.CreateObject("ADODB.Connection"); conn.ConnectionString = "Provider=Microsoft.Jet....
  • zouqingfang
  • zouqingfang
  • 2012年07月22日 20:02
  • 2043

在asp中调用sql server的存储过程方法

在asp中调用sql server的存储过程可以加快程序运行速度   1.调用存储过程的一般方法   先假设在sql server中有一存储过程dt_users:   CREATE PROCED...
  • sscrazy
  • sscrazy
  • 2014年11月13日 16:01
  • 619

SQL Server数据类型转换方法

在SQL Server日常的函数、存储过程和SQL语句中,经常会用到不同数据类型的转换。在SQL Server有两种数据转换类型:一种是显性数据转换;另一种是隐性数据转换。下面分别对这两种数据类型转换...
  • qq_37446416
  • qq_37446416
  • 2017年02月04日 10:04
  • 124

ASP中数据类型转换

每个函数都可以强制将一个表达式转换成某种特定数据类型。 语法 CBool(expression) CByte(expression) CCur(expression) CDate(expression...
  • ie421
  • ie421
  • 2007年05月18日 11:23
  • 1005

SQL Server 与ORACLE数据类型转换对应关系

oracle 与 sql server 数据类型对应关系 sql serer 向oracle 转换对应关系
  • shiyu1157758655
  • shiyu1157758655
  • 2017年07月18日 14:02
  • 568

Sql数据类型转换

Sql数据类型之间的转换,通过实例助于理解
  • u010355520
  • u010355520
  • 2014年04月18日 14:53
  • 1607

Java中数据类型的转换规则

Java中数据精度比较 byte
  • sunberryL
  • sunberryL
  • 2016年08月11日 11:36
  • 2903
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP中使用SQL时的数据类型转换
举报原因:
原因补充:

(最多只允许输入30个字)