560 likes | 715 Views
一、创建连接对象 在使用连接对象前,必须先调用 Server.CreateObject 方法创建该对象。 调用格式如下: <% Set conn=Server.CreateObject("ADODB.Connection") %>. 二、连接对象的属性和方法 在连接数据库之前通常需要对连接对象的 属性进行必要的设置 。 例如,通过设置 ConnectionString 的属性,就能够构造包含连接信息的字符串,然后将这一信息发送给会话对象,应用于整个应用程序,使得开发应用程序更加快捷。. 连接对象的属性 1、 连接对象的属性
E N D
一、创建连接对象 在使用连接对象前,必须先调用Server.CreateObject方法创建该对象。 调用格式如下: <% Set conn=Server.CreateObject("ADODB.Connection") %>
二、连接对象的属性和方法 在连接数据库之前通常需要对连接对象的 属性进行必要的设置。 例如,通过设置ConnectionString的属性,就能够构造包含连接信息的字符串,然后将这一信息发送给会话对象,应用于整个应用程序,使得开发应用程序更加快捷。
连接对象的属性 1、 连接对象的属性 (1)Attributes属性 Attributes属性——定义了连接对象的事务处理方式,控制事务成功或失败后连接对象向数据库写数据的方式。该属性可以设置为以下两个值: 第一种是:adXactCommitRetaining 在成功调用CommitTrans方法,事务被写入数据库后,自动启动一个新事务。这种方式称为保留提交。 第二种是:adXactAbortRetaining 在成功调用RollbackTrans方法,事务被取消后,自动启动一个新事务。这种方法称为保留取消。 注:如果想同时达到以上两种效果,可以将该属性的值设置为adXactCommitRetaining与adXactAbortRetaining之和。
连接对象的属性 • (2)CursorLocation属性 • CursorLocation有两个取值 • 一个是adUseClient • 另一个是adUseServer(默认)。 • 前者是使用客户端的游标,表示将数据库服务器的处理结果保留在服务器做处理。 • 后者是使用服务器端的游标,表示将数据库服务器的处理结果返回服务器端以供处理。 • 客户游标主要是当在客户机上缓存结果集时才使用。在客户游标中,有一个缺省的结果集被用来在客户机上缓存整个结果集。 • 客户游标常常仅被用作服务器游标的辅助。因为在一般情况下,服务器游标能支持绝大多数的游标操作。 • 服务器游标被称为后台游标,而客户端游标被称为前台游标。
连接对象的属性 例: Set conn=Server.CreateObject("ADODB.Connection") conn.CursorLocation=adUseClient strConn="driver={SQL Server}; server=jiangli;uid=sa;pwd=;database=pubs" conn.open strConn set rs=Server.CreateObject("ADODB.RecordSet") rs.open "",conn, , ,
连接对象的属性 (3)ConnectionString属性 ConnectionString用于在打开一个Connection实例之前设定数据库的连接信息。 这些信息包括: 1 Provider参数:表示与数据库连接缺省的provider名称。 2 Data Source/DSN参数:表示ODBC中数据源名称(DSN)。 3 User ID/UID参数:表示连接数据库的用户帐号。 4 Password/PWD参数:表示连接数据库的用户密码。 5 File Name参数:表示指定连接到的数据文件名称。该属性不能与Provider同时设置。
连接对象的属性 • 每一个项目以“参数名=值”的形式存放在该属性中,项目和项目之间使用“;”分隔。 • 在上面的例子中使用了一条语句conn.open strConn,其中strConn就是ConnectionString,因此上面的语句也可写成: • strConn="driver={SQL Server}; • server=jiangli;uid=sa;pwd=;database=pubs" • Conn.ConnectionString=strConn • Conn.open
连接对象的属性 • (4)ConnectionTimeOut属性 • ConnectionTimeOut用于设定连接对象的Open方法与数据库连接的最长等待时间,缺省值为15秒。 • 如果ConnectionTimeOut属性设置为0,则表示系统会一直等待,直到连接成功。 • 在这种情况下,如果不能够连接上数据库,就会让用户一直等待下去,因此在实际应用中应避免这种情况发生。
连接对象的属性 • ConnectionTimeOut属性在连接关闭时是可读写的,而在连接对象启动时其属性是只读的,故ConnectionTimeOut的属性设置必须在连接前或取消连接后。 • ConnectionTimeOut属性的语法格式如下: • Connection.ConnectionTimeOut=seconds
连接对象的属性 • (5)CommandTimeOut属性 • CommandTimeOut属性用于设定连接对象的Execute方法运行的最长等待时间,缺省值为30秒。如果希望没有时间限制,则可以将其设置为0。 • 在运行时CommandTimeOut属性是可读写的,而运行中其属性是只读的,故其属性的设置必须在Execute方法运行前。 • 它的语法格式如下: • Connection.CommandTimeOut=seconds • 例: • Set conn=Server.CreateObject("ADODB.Connection") • Conn.CommandTimeout=20 • Conn.open “filedsn=myDataBase.dsn”
连接对象的属性 • (6)Provider属性 • Provider属性可以用来返回或设置连接对象的提供者名称,这里所谓的提供者名称是指内定数据库管理程序名称。 • ADO缺省的Provider属性值为MSDASQL(Microsoft OLE DB Provider for ODBC),它负责管理所有以ODBC连接的数据库 • 其语法格式如下: • Connection.Provider=ProviderName • 可用下面的脚本输出连接对象的数据提供者名称: • <% Response.write "The Provider is" & conn.Provider& "<br>" %>
连接对象的属性 如:OLE DB connection for Access oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _ "Data Source= c:\\somepath\\dbname.mdb;" & _ "User Id=myUsername;" & _ "Password=myPassword"
连接对象的属性 • (7)Default Database属性 • DefaultDatabase属性用来设置连接对象的默认数据库名称。 • 如果存在默认数据库,SQL查询字串中不需要再指定所操作的数据库,ADO对象会自动使用本属性所设置的数据库。 • 当需要访问其他数据库时,可以将DefaultDatabase属性设置为该数据库的名称,或直接在SQL查询命令中指定数据库,如: • Select * from 数据库名.表名
连接对象的属性 (8) Version属性属性 Version 用于返回ADO版本号。
连接对象的属性 • (9)Mode属性 • Mode属性被用于设置连接的权限,诸如只读或读写。这个属性还可以被设置为拒绝访问其它数据库。 • adModeUnknown 权限未设置或不能确定(默认值)。 • adModeRead 连接是只读的。 • adModeReadWrite 连接是可读写的。 • adModeShareDenyNone 禁止其他用户以任何权限建立连接。
连接对象的属性 • adModeShareDenyRead禁止其他用户以读取权限建立连接。 • adModeShareDenyWrite禁止其他用户以写入权限建立连接。 • adModeShareExclusive 禁止其他用户建立连接。 • adModeWrite 连接是只写的
2、连接对象的方法 (1).Open方法 负责创建与数据源的连接,语法如下: connection.Open ConnectionString, UserID, Password • 其中ConnectionString包含用于建立连接数据源的信息。 • UserID包含建立连接时所使用用户名。 • Password包含建立连接时所使用密码。
连接对象的方法 注意:如果在ConnectionString参数中包括了用户名和密码信息,而同时UserID及Password参数也存在,那么UserID和Password参数将覆盖ConnectionString中指定相应的信息。 • 在创建连接时,由于数据库的不同,Connection参数的设置也有所不同: • 对于在“ODBC数据源控制面板”中设置过的数据源,该参数设置比较简单,可以使用“DSN=数据源名称”的格式。 • 对于没有在“ODBC数据源控制面板”中设置过的,则可以采用指定ODBC驱动程序设置,在Windows系统目录下的Odbc.ini文件中,可以找到相关的信息。
连接对象的方法 可以使用两种途径来使用 Open方法 1、直接将字符串传与Open方法,在连接字符串中提供所有信息 <% Set conn=Server.CreateObject("ADODB.Connection") conn.Open "DSN=TEST;UID=uid;PWD=pwd" %>
连接对象的方法 示例: <% Set conn=Server.CreateObject("ADODB.Connection") conn.Open "PROVIDER=SQLOLEDB;DATA SOURCE=JIANGLI; UID=SA;PWD=secret;DATABASE=BOOK" %> • Provider指定用于连接的提供者的名称,SQL Server使用sqloledb。 • Data Source指定数据库服务器的名称。 • DATABASE指定要连接的数据库名称 • User表示登录SQL Server服务器的用户帐号。 • Password表示登录SQL Server服务器的用户密码
连接对象的方法 2、直接用ConnectionString属性 <% Set conn=Server.CreateObject("ADODB.Connection") conn.ConnectionString ="DSN=CATCH;UID=uid;PWD=pwd" conn.Open %>
连接对象的方法 2. Close Close方法用来关闭一个对象与数据源的连接。 Close语法为: conn.Close 当与数据源的连接完成任务后,应调用Close方法关闭与数据源的连接,以便释放与该连接有关的系统资源。 但需要注意,调用Close方法只是释放与该连接有关的系统资源,而该连接对象Connection本身并没有释放。因此一个关闭的连接对象还可以继续使用Open方法打开连接,而不再需要重新创建一个连接对象。
连接对象的方法 • 在使用Close方法关闭与数据源的连接后,若要释放连接对象本身,可以给已经创建的连接对象赋值Nothing,将连接对象彻底从内存中清除。 如: • <% Set MyConn=Nothing %> • 在连接对象赋值Nothing后,如果还需要继续使用连接对象,则必须使用Server.CreateObject方法重新创建一个。
连接对象的方法 3. BeginTrans方法 • BeginTrans方法用于开始一个新事务。 • 注: • 事务-------是指一组逻辑操作单元,使数据从一种状态变换到另一种状态。 • 为确保数据库中数据的一致性,数据的操纵应当是离散的成组的逻辑单元 • 当它全部完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应全部视为错误,所有从起始点以后的操作应全部回退到开始状态。
连接对象的方法 4. CommitTrans方法 利用CommitTrans方法来提交所有事务的处理结果。其语法: Connection.CommitTrans 例:
<%@ Language=VBScript %> <% dim conn dim connstr connstr="DBQ="+server.mappath("email.mdb")+";DefaultDir=; DRIVER={Microsoft Access Driver (*.mdb)};" set conn=server.createobject("ADODB.CONNECTION") conn.open connstr conn.BeginTrans conn.Execute "insert into user (username,password) values('lyd','123456')" conn.Execute "delete from user where id=57" conn.CommitTrans %> 示例:在数据表中插入一个用户并且删除一个用户
连接对象的方法 5. RollbackTrans方法 利用RollbackTrans方法来放弃所有的事务处理结果。其语法如下: Connection. RollbackTrans
连接对象的方法 6. Execute方法 打开数据库连接后,可以用connection对象的execute方法执行任何SQL语句。如创建数据表,进行数据库的数据查询,以及在数据表中插入、更新、删除和选择数据等。 执行指定的查询、SQL语句、存储过程或特定提供者的文本等内容,语法如下: 对于没有返回结果的命令格式: connection.Execute CommandText, RecordsAffected, Options
连接对象的方法 • 对于有返回结果的命令格式: Set recordSet =connection.Execute(CommandText, RecordsAffected, Options) 该方法返回一个RecordSet对象。
连接对象的方法 • CommandText: • 是包含表名、SQL语句或存储过程名称等的一个字符串。 • 通常SQL命令包括可以使用数据操作语言(DML,Data Manipulation Language)来操作数据源的数据。 • 例如INSERT(增加记录)、DELETE(删除记录)、UPDATE(更新记录)、或是SELECT(以Recordset的形式提取数据等)。 • 除此之外,也可以通过CommandText参数对数据库发出数据定义语言(DDL,Data Definition Language),例如CREATE TABLE(建立数据表)、DROP TABLE(删除数据表)或 ALTER TABLE(修改数据表的表结构)等。
连接对象的方法 RecordsAffected: • 是一个可选的变量参数,表示当对数据库提出请求时所返回或影响的记录数。 • 例如,若想知道在执行一个SQL语句时到底删除了多少条记录,只需要把一个变量传给RecordsAffected参数,执行完该方法后,通过检查该变量的值便可知道共删除了几条记录。
连接对象的方法 • Options:是一个可选参数,用来指定CommandText参数的性质。可以使用下面的常量作为Options参数: • adCmdTable:此参数表明CommandText是一个表名。 • adCmdText:此参数表明CommandText是一个SQL命令串。 • adCmdStoredProc:此参数表明CommandText是一个存储过程。 • adCmdUnknown:不指定字符串的内容。(这是缺省值)
为避免每次打开一个新连接时都要输入系统数据源的路径和名字,可以把这个字符串分配给一个session变量或者在一个包含文件中把它定义为一个常量,这样只需要键入一个变量名即可,而不必输入文件数据源的完整名称。为避免每次打开一个新连接时都要输入系统数据源的路径和名字,可以把这个字符串分配给一个session变量或者在一个包含文件中把它定义为一个常量,这样只需要键入一个变量名即可,而不必输入文件数据源的完整名称。 • 要定义一个包含有文件数据源名字的session变量,可以在文件Global.asa中定义。 例如,可以把下面的内容添加到文件Global.asa的session_onstart脚本中: • session("connectionstring")= "dsn=vod;uid=sa;pwd=mypassword;" • 建立了这个session变量后,就可以用如下的脚本打开一个连接:
连接对象的方法 • <% • Set MyConn=Server.CreateObject("ADODB.Connection") • MyConn.Open Session("connectionstring") • %> • 把文件数据源的名字分配给一个session变量的另一个优点是,将来可以很容易地改变数据源。 • 在一个ASP网页中使用这些常量之前,必须先包含一个名为ADOVBS.inc的特殊文件。这个文件中包含ADO使用的所有VBsript常量。
连接对象的方法 一般来说,ADOVBS.inc被安装在c:\Program Files\Common Files\System\ADO目录下。 • 如果要使用该文件的常量,只要将该文件拷入ASP程序所在的目录即可。但如果使用的是JavaScript,而不是VBsript,ADO常量的包含文件应该是ADOJAVAS.inc。
三、 数据库连接方式 1. 连接字符串 (1)微软Access如果使用ODBC,而没有DSN: DRIVER={Microsoft Access Driver (*.mdb)};DBQ=database_name.mdb 例如: <% Set conn=Server.CreateObject("ADODB.Connection") conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ= C:\liubing\database_name.mdb " %>
(2)微软SQL Server 对于微软SQL Server,使用针对ODBC提供者的格式如下: Driver={SQL Server};Server=server_name; Database=database_name; UID=user_name;pwd=user_password 例如: <% Set conn=Server.CreateObject("ADODB.Connection") conn.Open " Driver={SQL Server};SERVER=JIANGLI; UID=SA;PWD=123456;DATABASE=BOOK" %>
2. 数据链接文件 这是一个含有连接细节的文件(扩展名为.udl),优点是对于任何数量的ASP页面只需要一个数据链接文件。 3. ODBC数据源,或DSN <% Set conn=Server.CreateObject("ADODB.Connection") conn.Open "DSN=KKK" %>
4. 使用包含文件 创建一个新的ASP文件,不妨称为Connection.asp,并在这个文件中加入下面的代码: <% Set conn=Server.CreateObject("ADODB.Connection") conn.Open "Provider=SQLOLEDB;Data Source=JIANGLI;Initial Catalog=book; " &_ "User Id=sa;Password=123456" %> 在其它的ASP页面中,可以在顶端加入这一行: <!--#include file=" Connection.asp "-->
5. 使用连接状态 将连接字符串存入应用程序变量是一个常用的技巧,同使用一个包含文件一样有效。 例如,可以在global.asa文件中加入下面的代码: Sub Application_Onstart() strConn="Provider=SQLOLEDB;Data Source=JIANGLI;Initial Catalog=book; " &_ "User Id=sa;Password=123456" Set Application("ConnectionString")=strConn End Sub 在ASP页面中,可以使用下面的代码: <% Set conn=Server.CreateObject("ADODB.Connection") conn.Open Application("ConnectionString") %>
6、 OLE DB Providers方法 (1).OLE DB connection for Access oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _ "Data Source= c:\\somepath\\dbname.mdb;" & _ "User Id=myUsername;" & _ “Jet OLEDB:Database Password=myPassword“ 例:
利用上面连接数据库的方法就可以打开常用类型的数据库,然后利用ADO的Recordset对象的增加记录、删除记录、修改记录等功能就可以对数据库进行操作。但是要说明的是,在实际开发中,如果使用DBF、DBC、Excel数据库,执行效率没有MDB数据库效率高,因此最好用MDB类型数据库。利用上面连接数据库的方法就可以打开常用类型的数据库,然后利用ADO的Recordset对象的增加记录、删除记录、修改记录等功能就可以对数据库进行操作。但是要说明的是,在实际开发中,如果使用DBF、DBC、Excel数据库,执行效率没有MDB数据库效率高,因此最好用MDB类型数据库。 • 如果用DBF、DBC、Excel数据库,要注意:Excel数据库只能读取、增加记录、修改记录,但不能删除记录;DBF、DBC可以读取记录、增加记录、删除记录、修改记录,但是在增加记录时,任何一个字段值都不能为空,由此可看出局限性很大,所以尽可能地用MDB或SQL数据库。
综合示例: <%'取得用户在浏览器中输入的用户名 strUserName = Request.Form("Username") '取得用户在浏览器中输入的密码 strUserPassword = Request.Form("Userpassword") Set objDBConn =Server.Createobject("ADODB.Connection") '打开数据库,建立连接 objDBConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &_ Server.MapPath("dagl.mdb") ' SQL查询字符串
strSQL = "SELECT * FROM USERS WHERE UserName='" & strUserName & "'" Set objRS = objDBConn.Execute(strSQL) ' 检查用户 If objRS.EOF Then ' 无此用户 Response.Write "没有此用户" ' 检查密码 Else If objRS("UserPassword") = strUserPassword Then ' 密码正确 Response.Write "谢谢使用"
Else '密码错误 Response.Write "密码错误" End If End If ' 关闭网页数据库连接 Set objRS = nothing Set objDBConn = nothing %>
管理数据库连接 • 一个Web 数据库应用程序(例如为几千个客户服务的联机购物应用程序)是否能经得起考验,关键在于如何合理地管理数据库连接。即便是在没有任何信息传输时,打开并且保持数据库连接,也会严重耗费数据库服务器的资源并且可能会导致连接性问题。 • 设计良好的Web数据库应用程序将会回收数据库连接并能够补偿由于网络堵塞造成的延迟。
连接活动的增长可能使数据库服务器的负担加重,大量增加建立数据库连接的时间。过长连接延时的结果是降低数据库的性能。连接活动的增长可能使数据库服务器的负担加重,大量增加建立数据库连接的时间。过长连接延时的结果是降低数据库的性能。 <% Set MyConn=Sever.CreateObject("ADODB.Connection") '创建连接对象 MyConn.ConnectionTimeOut=20 MyConn.Open "DSN=mySystemDSN;Uid=myUsername;Pwd=myPassword" %>