分享
 
 
 

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

王朝asp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有