《ASP与数据库操作》由会员分享,可在线阅读,更多相关《ASP与数据库操作(109页珍藏版)》请在金锄头文库上搜索。
1、第7章 ASP与数据库操作 7.1.1 基本概念作为一种既易于使用又可扩展的技术,ADO可以用于向网页 添加数据库访问。使用ADO编写的应用程序可以存取在Internet 上任何地方的资源,例如,你可以在家里通过浏览器填写购物 单,去购买远在千里之外的物品。 1. 使用ADO访问数据库目前,Microsoft对应用程序访问各种各样的数据源所使用的方 法是OLE DB,OLE DB是一套组件对象模型(COM)接口,但它 是相当复杂的。连接应用程序与OLE DB的桥梁就是ADO。可以使用ADO编写简洁和可扩展的脚本,连接到与OLE DB兼 容的数据源,如数据库、电子表格、顺序数据文件或电子邮件目录
2、。OLE DB是一个系统级的编程接口,它提供一套标准的 COM接口,用来展示数据库管理系统的功能。使用ADO的对象模 型,可以轻松地(使用VBScript或JScript等脚本语言)访问这些接 口,并将数据库功能添加到您的Web应用程序中。另外,还可以 使用ADO访问与开放式数据库互连(ODBC)兼容的数据库。ADO可以使用VBScript、JavaScript脚本语言来控制数据库的存取 以及输出查询结果。2. ADO的特点ADO可以用来建造客户/服务器结构及Web的应用,它具有以下 的特点: 支持批处理(Batch Updating),可以分批处理客户端提出的请求 。 支持存储过程(Stor
3、ed Procedures),可使用in/out参数给存储过程 输入及输出值,并可以取得存储过程的返回值。 可以使用存储过程或批处理SQL指令,传回多组记录集的功 能。在当今提出的多种动态网页(DHTML)解决方案中都强调了与数据 库的连接,其实网页接挂后台数据库也是当前的热门应用,在电 子商务等领域有着广泛的应用,就是说,如果你不能掌握在ASP 中使用数据库,那么你就不能编写出功能强大的ASP应用程序。3. 示例数据库虽然可以使用多种数据库系统来从事ASP网页数据库的设计 ,但是由于Microsoft Access属于Microsoft Office家族,取得较为容 易,且界面与Office
4、家族一致,使用容易,因此本教程采用 Microsoft Access进行网页数据库的设计。本课的示例数据库文件rsgl.mdb中包含的“职工工资” 表的结构见表 字段名称类型必填字段长度索引 部门文本(Text)是6 编号文本(Text)是6主索引 姓名文本(Text)是8 基本工资货币(Currency)否岗位津贴货币(Currency)否 职务补贴货币(Currency)否 奖金货币(Currency)否 房租货币(Currency)否 水电货币(Currency)否 实发工资货币(Currency)否7.1.2 ADO对象模型ADO对象模型包括7个对象和3个集合,如图7-1所示 。其中对
5、象及集合的说明见表7-2和表7-3。表7-2 ADO对象描述 对象描述Connection(连接对象 )用来建立数据源和ADO程序之间的连接Command(命令对象)用来嵌入SQL查询 ,包括对存储过 程的调用Parameter(参数对象)用来传递 参数给SQL查询 ,在使用存储过 程时用 到 Recordset(记录 集对象 )用来浏览 及操作实际 数据库内的数据,这是非常 重要的一个对象 Field(字段对象)用来取得一个记录 集(Recordset)内不同字段的值Error(错误对 象)用来返回一个数据库连 接(Connection)上的错误Property(属性对象)指明一个ADO对象
6、的属性表7-3 ADO集合描述集合描述 Errors所有的Error对象集合。这个集合用来响应一 个连接(Connection) 上的单一错误 Parameters所有的Parameter对象集合。这个集合关联 着一个Command对象 Fields所有的字段对象集合。这个集合关联着一个 Recordset对象的所有字段 Properties所有的Property对象集合。这个集合关联着 Connection、Command、Recordset或者 Field对象说明:在ADO对象模 型中最为重要的对象 是三个一般对象: Connection对象、 Command对象和 Recordset对象
7、,通过 这三个对象,可以方 便地建立数据库连接 、执行SQL查询及存 取查询的结果。 图7-1 ADO对象模型7.1.3 Connection对象ASP使用ADO对各种数据源进行各种操作,其中Connection 对象是必不可少的,Connection对象可以用来在应用程序和 数据库中建立一条数据传输连线,在此基础之上可以使用 Command对象及Recordset对象来对Connection对象所连接的数 据库进行插入、删除、更新和查询等操作。就像拨打电话, 建立一个Connection对象就像是拿起话筒,打开一个 Connection对象就像是拨号,而使用Command对象及Records
8、e 对象则是用这条线路通话了。1. Connection对象的属性表7-4 Connection对象的常用属性 属性意义描述 CommandTimeout定义了使用Execute方法运行一条SQL命令的最长时 限, 才能够中断并产生错误 。默认值为 30秒(设定为0表示没 有限制) ConnectionString设定连接数据源的信息,包括FileName、Password、 Userld、DataSource、Provider等参数 ConnectionTimeout定义了使用open方法连接数据源的最长等待时间 ,默认 值为 15秒(设定为0时表示没有限制) DefaultDatabase
9、定义连 接的默认数据库 Mode建立连接之前,设定连接的读写方式,决定是否可更改目 前数据。0-不设定(默认)、1-只读、2-只写、3-读写 Provider设置连接的数据提供者(数据库管理程序),默认值 是 MSDASQL(MicrosotODBC For OLEDB) State读取当前链接对象的状态,取0表示关闭,1表示打开说明:其中ConnectionString属性用来设定连接数据源的信息, 包括FileName、Password、Userld、DataSource、Provider等参数 :Provider参数表示与数据库连接的缺省Provider名称; Password参数表示连
10、接数据库时所要用到的用户密码;Userld 参数表示用户的账号;DataSource参数表示ODBC中数据源的 名称;FileName参数指定另一个包含数据库连接信息的文件。2. Connection对象的方法 表7-5 Connection对象的方法及描述 方法意义描述Open建立一个与数据源的连接对象Close关闭与数据源的连接,并且释放与连接有关的系统资 源 Execute执行SQL命令或存储过 程,以实现 与数据库的通讯BeginTrans开始一个新的事务,即在内存中为事务开辟一片内存 缓冲区 CommitTrans提交事务,即把一次事务中所有变动 的数据从内存缓 冲区一次性地写入硬盘
11、,结束当前事务并可能开始一 个新的事务 RollbackTrans回滚事务,即取消开始此次事务以来对数据源的所有 操作,并结束本次事务操作下面对部分方法进行详细说明。(1) Open方法Open方法可以建立一个与数据源的连接对象,打开与数据 源的连接。其语法格式为: Connobject.Open connectionstring, UserId, Password其中:Connectstring为可选参数,它是一个字符串变量,包 含链接的信息。用法参见Conectionstring属性。UserId为可选参数,它是一个字符串变量,包含建立连接时 访问数据库使用的用户名称。Password为可
12、选参数,它是一个字符串变量,包含建立连接 时访问数据库使用的密码。(2) Close方法Close方法可以关闭与数据源的连接,并且释放与连接有关 的系统资源。其语法格式为: Connobject.close其中:Connobject为已经创建的Connection对象。使用Close方法关闭Connection对象,并没有从内存中删除该 对象。因此一个关闭的connection对象还可以用open方法打开 而不必再次创建一个connection对象。此外,在使用close方法 关闭连接时,也将关闭以此连接相关的所有活动的recoordset 对象。但是,与此连接相关的command对象将不受影
13、响,只 不过command对象不再参与这个连接。为了释放connection对象所占用的所有资源,可以用下面的 命令: Set Connobject = nothing(3) Execute方法Execute方法用来执行SQL命令或存储过程,以实现与数据库 的通讯。其语法为:有返回记录的格式: Set Rs = Connobject.Execute(CommandText, ReccordAffected, Options)无返回记录的格式: Connobject.Execute CommandText, ReccordAffected, Options其中:Rs为创建的Recordsed对象
14、;Connobject为已经创建的 Connection对象。CommandType是一个字符串,它包含一个表名,或某个将被 执行的SQL语句;ReccordAffected为可选参数,返回此次操作所 影响的记录数。Options为可选参数,用来指定参数的 CommandText参数的性质,即用来指定ADO如何解释 CommandText参数的参数值,其取值与意义见表7-6值意义描述1表示被执行的字符串包含一个命令文本2表示被执行的字符串包含一个表名4表示被执行的字符串包含一个存储过程名8没有指定字符串的内容(这是默认值)表7-6 Options参数的取值及意义 7.1.4 Command对象
15、Command对象用来定义数据库的查询动作,这个查询一般采 用SQL语句,大部分数据库都会支持SQL语言解释。通过和SQL Server的查询及存储过程的良好结合,Command对象有更强大 的数据库访问能力,无论是对数据库的插入、更新和删除这类 无需返回结果集的操作,还是对Select查询这样需返回结果集 的操作都一样简单。1. Command对象的属性 表7-7 Command对象的属性 说明:CommandType属性指示CammandText属性中设定的“命令 字符串”的类型,即用来指ADO如何解释CammandText参数的参 数值,它的取值与意义与表7-6中Options参数的取值
16、及意义相同 。 2. Command对象的方法Command对象的常用方法有Execute方法,用来运行 CommandText属性所设定的SQL查询、SQL说明命令或存储过程 ,以实现与数据库的通讯。其语法为:有返回记录的格式: Set Rs = Comm. Execute(RecordsAffected, Parameters, Options)无返回记录的格式: Comm.Execute RecordsAfiected. Parameters, Options其中:Rs为创建的Recordsed对象;Comm为已经创建的 Command对象。RecordAfiected为可选参数,返回此次操作所影响的记录 数。Parameters为可选参数,表示一个SQL语句的参数集合 。Options为可选参数,用来指定ADO如何解释CommandText 参数的参数值,它的取值与意义与表7-6中Options参数的取 值及意义相同。7.1.5 Recordset对象Recordset对象对应着Command对象的查询返回结果,或者是 直接建立的一个带查询