手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

ADO的建立连线

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
ADO的建立连线
  ADO的连线主要可分成透过OLE DB Privder的方式与OLE DB Provider for ODBC,前者很明显的是Microsoft公司极力发展的方式,据说它比透过ODBC的方式快且所 资源少 ,但实№上如何,几年之後就可很清楚了。不过目前有Privder提供OLE DB介面者尚没有非常多,但提供ODBC介面者就很多了,在只有ODBC Driver之下,如果也要使用ADO的话那可以使用OLE DB Provider for ODBC的介面,然而它的Performance和使用RDO来比,那得花上好些工夫试看看,至少我没有那些工夫做这种事。

先看看OLE DB Provider for ODBC的连法

Dim connstr As String
Set cn = New ADODB.Connection
cn.Provider = "MSDASQL" Microsoft OLE DB Provider for ODBC)
因为是透过ODBC来做,所以connstr的设定,和使用RDO ODBC的连线字串皆相同
connstr = "UID=cww;PWD=jjh5612;Database=cwwpf@eis;" _
"Driver={OpenLink Generic 32 Bit Driver};" _
"Host=192.168.0.61;" _
";FetchBufferSize=30" _
";NoLoginBox=Yes" _
";Options=" _
";Protocol=TCP/IP" _
";ReadOnly=No" _
";ServerOptions=" _
";ServerType=Informix 7.2"
cn.ConnectionString = connstr
cn.Open

sql = "Select * from testtab order by case_no"
Set rs = New ADODB.Recordset
Set rs.ActiveConnection = cn 设定该Resultset依附在cn物件上开启
rs.CursorLocation = adUseServer
rs.LockType = adLockOptimistic
rs.CursorType = adOpenKeyset
rs.Source = sql
rs.Open


  如此启了一个Connection。不过这边要提出的是,ADO不像RDO它的Recordset物件不一定要附属於某一个已开启的Connection物件。回想一下,一般RDO Recordset的建立是透过 rdoConnection.OpenResultset或rdoQuery.OpenResultset的方式,而rdoQuery的建立是透过rdoConnection.CreateQuery,所以这里可见到rdoConnection/rdoQuery/rdoResultset 是有阶层观念的,rdoResultset一定要透过现存的一个rdoConnection物件才能建立,但是在ADO则不同,adoResultset物件可以自行就产生了,不必透过adoConnection物件,但它也可以将Connection依附在现存的adoConnection之下,像上面的例子便是如此。而以下的例子则是单独使用ado Resultset建立连线的方? 当然,单独使用Resultset物件来建立连线它也有建立一个adoConnection来连,只是我们没有办法Reference到它;而在比较复杂的系统(例如要有Transacction),那还是得先从ado Connection物件建立起再来做。


connstr = "UID=cww;PWD=jjh5612;Database=cwwpf@eis;" _
"Driver={OpenLink Generic 32 Bit Driver};" _
"Host=192.168.0.61;" _
";FetchBufferSize=30" _
";NoLoginBox=Yes" _
";Options=" _
";Protocol=TCP/IP" _
";ReadOnly=No" _
";ServerOptions=" _
";ServerType=Informix 7.2"
sql = "Select * from testtab order by case_no"
Set rs = New ADODB.Recordset
用以下的方式就不用单独设定CursorType/LockType/Source等等的属性,而原本第二
个参数是存放所依附的adoConnect物件,现在则改成连线的字串
rs.Open sql, constr, adOpenKeyset, adLockOptimistic

而使用OLE DB 的方式呢?

Set cn = New ADODB.Connection
connstr = "Data Source=OPEN_VIEW;User=cww;Password=jjh5612;Initial Catalog=Pubs"
cn.Provider = "SQLOLEDB" 设定Privder是SQL Server OLE DB,该名称随不同的
Database Privder不同而有所不同
cn.ConnectionString = connstr
cn.Open
sql = "Select * from Authors"
Set rs = New ADODB.Recordset
Set rs.ActiveConnection = cn
rs.Open sql, cn, adOpenKeyset, adLockOptimistic

  上面的例子中,Data Source指的是SQL Server的名称,而Initial Catalog指的是Database名称在这里,我们也可以不设定Database的名称,而在ado Connection建立之後再来设
定Connection物件的DefaultDatabase如下:

Set cn = New ADODB.Connection
connstr = "Data Source=OPEN_VIEW;User=cww;Password=jjh5612;"
cn.Provider = "SQLOLEDB"
cn.ConnectionString = connstr
cn.Open
cn.DefaultDatabase = "cwwtest"
sql = "Select * from testtab"
Set rs = New ADODB.Recordset
Set rs.ActiveConnection = cn
rs.Open sql, cn, adOpenKeyset, adLockOptimistic

Set rs2 = New ADODB.Recordset
cn.DefaultDatabase = "Pubs"
rs2.Open "Select * from Authors", cn, adOpenForwardOnly, adLockReadOnly

  如此一来,同一个Connection物件,便可以有不同Database的asoResultset物件附於其上了。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!