在ASP中使用类

网站建设   2008-08-12 19:42   阅读1   评论1  
字号:    

类和对象:
关于类定义的说明有好几种。我认为可以简单地定义为,类是一种提供特定方法的数据类型。[译者注:c++刚从c衍生出来的时候,类被定义为”带方法的结构“。我认为用”封装的数据(成员、属性、方法)集合“可能更贴切。]
对象(或者类的实例)可以被描述为使用由类提供的方法的变量。
[译者注:对象和实例略有不同。使用指针或引用自身时,不可作为实例。]

如何在asp中使用类呢?
首先要建立类。作为例子,下面建立一个超链接的类。这个例子没有什么意义,我只是用它说明如何建类。


class navigation
public nav_url
public nav_title

public property get nav_link
nav_link="" & nav_title & ""

end property
end class

 

类由关键字class起头,后面跟随类的名字,本例中是navigation。第二行和第三行定义了二个变量,它们被声明为公共变量,可以让类外的函数调用。如果要限制变量只能在类里面使用,就要把变量声明为私有(private)类型。

随后的代码声明了一个公共属性(public property)。这里的属性设定是让外部函数读取类的属性值。
属性(property)有三个参数:
1、property let:外部函数设置类的属性值。
2、property set:get方法的特例。
3、property get:外部函数读取类的属性值。

在本例中,属性段代码用类的二个变量构造成超链接字符串。属性声明用end property结尾。
最后是类结束标记end class。
代码中chr(34)是双引号。

至此,我们建立了一个类。但如何在asp文件中使用它呢?
要使用类,先要把这样的代码放在asp脚本文件里,作为源文件或包含文件。然后要建立一个对象。
下面我们建立一个类的对象:
1: dim objhyperlink
2: set objhyperlink = new navigation
执行set objhyperlink = new navigation指令时,就创建了一个类的对象或实例。

要得到超链接,先要给对象的变量赋值:
1: objhyperlink.nav_url = "http://www.askasp.com";
2: objhyperlink.nav_title = "codeanimal - for the new breed of developer"
对象的变量由对象名 + "." + 类成员名组成,就是这里的objhyperlink.nav_url和objhyperlink.nav_title。对象将用属性objhyperlink.nav_link返回超链接字符串。

输出:response.write objhyperlink.nav_link或在heml语言里使用。

[译者注:最后别忘了在asp文件中析构对象 - set objhyperlink = nothing]

好了,希望你们已经能够初步掌握asp中的类和对象。


在下面,我将说明如何使用类与数据库建立连接,这是asp中的重要议题之一。

asp应用中最重要的事情之一就是数据库连接。谈到数据库连接,首先考虑到是连接速度和安全性。但最终起决定性的因素是使用的方便性。


高级应用-数据库连接

asp应用中最重要的事情之一就是数据库连接。谈到数据库连接,首先考虑到是连接速度和安全性。但最终起决定性的因素是使用的方便性。

asp中的数据库连接由二部分组成:
a) 连接数据库
b) 建立纪录集合(recordset)

数据库连接过程如下:
1: dim objdbconnection
2: set objdbconnection = server.createobject("adodb.connection")
3: objdbconnection.provider="microsoft.jet.oledb.4.0"
4: objdbconnection.open server.mappath("./") & "pathdatabasename.mdb;"

这是数据库连接代码。使用简单的dsn-less方式连接到ms access数据库。第二句代码创建了连接对象objdbconnection。第三句代码指明由microsoft jet-database provider[译者注:access的驱动器]提供连接。最后用open建立与数据库的连接。

创建纪录集合对象:
1: dim objrecset
2: set objrecset = server.createobject("adodb.recordset")
3: thissql = "select ..."
4: objrecset.open thissql,objdbconnection, adopendynamic, adlockpessimistic

第二句代码创建了纪录集合对象(objrecset)。在打开纪录集合对象前要写好数据库查询语句(sql)。通过纪录集合就可以访问数据库查询结果。

我在本文的第一部分说明了如何在asp中建立类和对象。类的主要任务之一是它的可重用性。类的可重用性的好坏取决于程序员以及如何萃取问题的关键。一个好的类可以被许多程序员所用。

首先,我们需要:
数据库名字(和相应的表名)
数据库路径
sql语句

由此,我们建立这样的类:


class cls_database

public db_name
public db_path
public tbl_name
public qry_sql

dim obj_dbconn
dim obj_recset
dim sql_string

public property get this_rsarray

set obj_dbconn = server.createobject("adodb.connection")
obj_dbconn.provider="microsoft.jet.oledb.4.0"
obj_dbconn.open server.mappath("" & db_path & db_name & "")

set obj_recset = server.createobject("adodb.recordset")
sql_string = qry_sql
obj_recset.open sql_string,obj_dbconn, adopendynamic
this_rsarray = obj_recset.getrows()
obj_recset.close
obj_dbconn.close

end property

end class

 

本例同样使用dsn-less连接方法连接到access数据库。

cls_database类的结构:
类的开始定义了几个公共成员:
- db_name = 数据库名或数据库文件
- db_path = 数据库路径
- tbl_name = 表名
- qry_sql = sql查询语句

给成员赋值之后,就可以打开数据库和创建纪录集。可以看到,做法与上面的例子是一样的。
但也有了新的做法:
22: this_rsarray = obj_recset.getrows()
...

纪录集通过getrows()方法将纪录值传递给this_rsarray数组,让你的asp文件可以访问。这是个二维数组,第一维是表的域名,第二维是查询结果。

类的用法:
dim obj_dbtest
set obj_dbtest = new cls_database
obj_dbtest.db_name = "thistest.mdb"
obj_dbtest.db_path = "./"
obj_dbtest.qry_sql = "select * from test_table"
所有的事情都离不开对象 ;o) - 所以我们建立一个新的对象
obj_dbtest。下面的代码说明如何显示纪录。

cls_database类的查询结果转换到外部数组(this_array),通过它将查询结果显示在表中。变量dscounter是纪录集的循环变量。
ubound函数得到数组的上限值,也就是循环结束标志。为便于说明,我把数组值转换成变量,你也可以直接使用数组值。
最后,把结果写入表中。

评论(?)
阅读(?)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
网易公司版权所有 ©1997-2009