|
一、存取數據庫的原理
在ASP中,用來存取數據庫的對象統(tǒng)稱ADO對象(Active Data
Objects),主要含有三種對象:Connection、Recordset和Command,其中Connection負責打開或連接數據庫,Recordset負責存取數據表,Command負責對數據庫執(zhí)行行動查詢(Action
Query)命令和執(zhí)行SQL Server的Stored Procedure。只依靠這三個對象還是無法存取數據庫的,還必須具有數據庫存取的驅動程序:OLE
DB驅動程序和ODBC驅動程序。對于任何一種數據庫都必須有相對應的OLE DB驅動程序和ODBC驅動程序,ADO對象才能對數據庫進行存取。
ADO對象必須與各種驅動程序相結合才能存取各種類型數據庫,不同的數據庫需要不同的驅動程序。在Windows
9x/NT的"開始"→"設置"→"控制面板" →"ODBC Data Source(32Bit)"中的"驅動程序"標簽頁,可以查證機器上究竟裝了哪些驅動程序。
二、連接數據庫和打開數據表
不同數據庫的連接方法有所不同(即建立Connection實例的方法不一樣),但建立Connection實例后,利用Recordset對象進行存取數據的方法卻大同小異。下面對于不同的數據類型,編寫了相對應的連接函數,在程序中直接引用即可。
程序用VB Script腳本語言編寫。
1.建立MdbRecordset對象。MDB數據庫是一個完整的數據庫,內部可能含有若干個數據表,在此函數中,Connection的作用是連接數據庫,Recordset的作用是打開數據表。
- Function CreateMdbRecordset(數據庫文件名, 數據表名或Select語句 )
- Dim conn,Provider,DBPath
- '建立Connection 對象
- Set conn = Server.CreateObject("ADODB.Connection")
- Provider="Provider=Microsoft.Jet.OLEDB.4.0;"
- DBPath = "Data Source=" & Server.MapPath("數據庫文件名")
- '打開數據庫
- conn.Open Provider & DBPath
- Set CreateMdbRecordset = Server.CreateObject("ADODB.Recordset")
- '打開數據表
- CreateMdbRecordset.Open "數據表名", conn, 2, 2
- End Function
2.建立帶密碼的MDB數據庫的Recordset對象。它的建立方式與建立不帶密碼的MDB數據庫的Recordset對象類似,只是多了一個密碼參數,即在與數據庫連接時,必須給出密碼信息。
- Function CreateSecuredMdbRecordset( 數據庫文件名, 數據表名或Select語句,password )
- Dim conn,Provider,DBPath
- '建立Connection 對象
- Set conn = Server.CreateObject("ADODB.Connection")
- Provider = "Provider=Microsof.Jet.OLEDB.4.0;"
- DBPath = "Data Source="& Server.MapPath("數據庫文件名")
- '連接數據庫,注意要帶有密碼參數
- conn.Open Provider & DBPath&"Jet OLEDB:Database Password="&assword
- Set CreateSecuredMdbRecordset = Server.
- CreateObject("ADODB.Recordset")
- '打開數據表
- CreateSecuredMdbRecordset.Open "數據表名", conn, 2, 2
- End Function
3.DBF文件不是一個標準的數據庫文件,只相當于標準數據庫文件中的一個數據表,所以為了使用DBF文件,可以把所有的DBF文件放在一個目錄下,這樣把目錄名看成標準數據庫,每一個DBF文件相當于標準數據庫中的數據表。下面函數中的Directory是DBF所在的目錄名。
- Function CreateDbfRecordset( 目錄名, DBF文件名或Select語句 )
- Dim conn,Driver,SourceType,DBPath
- '建立Connection 對象
- Set conn = Server.CreateObject("ADODB.Connection")
- Driver="Driver={Microsoft Visual FoxProDriver};" SourceType = "SourceType=DBF;"
- DBPath="SourceDB=" & Server.MapPath("目錄名")
- '調用Open 方法打開數據庫
- conn.Open Driver & SourceType & DBPath
- Set CreateDbfRecordset = Server.CreateObject("ADODB.Recordset")
- '打開DBF文件
- CreateDbfRecordset.Open "DBF文件名或Select語句", conn, 2, 2
- End Function
4.由FoxPro生成的DBC數據庫與MDB數據庫相似,都是一個數據庫包含幾個數據表的形式,所以對DBC數據庫的存取方法與MDB數據庫相似。
- Function CreateDbcRecordset( DBC數據庫文件名, 數據表名或Select語句 )
- Dim conn,Driver,SourceType,DBPath
- '建立Connection 對象
- Set conn = Server.CreateObject("ADODB.Connection")
- Driver="Driver={Microsoft Visual FoxPro Driver};"
- SourceType = "SourceType=DBC;"
- DBPath = "SourceDB=" & Server.MapPath("DBC數據庫文件名")
- '連接數據庫
- conn.Open Driver & SourceType & DBPath
- Set CreateDbcRecordset = Server.CreateObject("ADODB.Recordset")
- '打開數據表
- CreateDbcRecordset.Open"數據表名或Select語句", conn, 2, 2
- End Function
5.將Excel生成的XLS文件(book)看成一個數據庫,其中的每一個工作表(sheet)看成一個數據庫表。
- Function CreateExcelRecordset(XLS文件名,Sheet名)
- Dim conn.Driver,DBPath
- '建立Connection對象
- Set conn = Server.CreateObject("ADODB.Connection")
- Driver="Driver={Microsoft Excel Driver (*.xls)};"
- DBPath = "DBQ=" & Server.MapPath("XLS文件名")
- '調用Open 方法打開數據庫
- conn.Open Driver & DBPath
- Set CreateExcelRecordset = Server.CreateObject("ADODB.Recordset")
- '打開Sheet
- CreateExcelRecordset.Open "Select * From ["&sheet&"$]", conn, 2, 2
- End Function
6.SQL Server屬于Server級的數據庫,使用時要求比較嚴格,必須要輸入用戶名及密碼才能使用。
- Function CreateSQLServerRecordset(計算機名稱,用戶ID, 用戶密碼,數據庫名稱 數據表或查看表或Select指令 )
- Dim Params, conn
- Set CreatSQLServerConnection = Nothing
- Set conn = Server.CreateObject ("ADODB.Connection")
- Params = "Provider=SQLOLEDB.1"
- Params = Params & ";Data Source=" & Computer
- Params = Params & ";User ID=" & UserID
- Params = Params & ";Password=" & Password
- Params = Params & ".Initial Catalog="&數據庫名稱
- Conn open Paras
- Set CreateSQLServerRecordset = Server. CreateObject("ADODB.Recordset")
- CreateSQLServerRecordset.Open source, conn, 2, 2
- End Function
- Dim conn,Driver,SourceType,DBPath
- ' 建立Connection 對象
- Set conn = Server.CreateObject("ADODB.Connection")
- Driver = "Driver={ Microsoft Visual FoxPro Driver};"
- SourceType = "SourceType=DBF;"
- DBPath = "SourceDB=" & Server.MapPath( "目錄名" )
- ' 調用Open 方法打開數據庫
- conn.Open Driver & SourceType & DBPath
- Set CreateDbfRecordset = Server.CreateObject("ADODB.Recordset")
- ' 打開DBF文件,參數二為Connection對象
- CreateDbfRecordset.Open DBF文件名或Select語句, conn, 2, 2
asp連接數據庫字符串:
- Set conn = Server.CreateObject("ADODB.Connection")
- connstr = "Driver={SQL Server};Server=localhost(數據庫所在的位置),1433;NETWORK=DBMSSOCN;UID=wap(連接數據庫的用戶名);PWD=wap(連接數據庫的密碼);DATABASE=wap(連接數據庫的庫名);"
- conn.Open connstr
- <%
- dim conn,rs
- set conn=server.createobject("adodb.connection")
- DBpath=Server.Mappath("../data/bbs.mdb")
- Conn.Open "driver={Microsoft Acess Driver(*.mdb)};dbq="&Dbpath
- s="select * from friend"
- Set rs=Server.CreatObject("ADODB.Recordset")
- rs.open s,conn,3
- %>
原理:
在實際應用開發(fā)中,特別是在WEB應用系統(tǒng)中,如果JSP、Servlet或EJB使用JDBC直接訪問數據庫中的數據,每一次數據訪問請求都必須經歷建立數據庫連接、打開數據庫、存取數據和關閉數據庫連接等步驟,而連接并打開數據庫是一件既消耗資源又費時的工作,如果頻繁發(fā)生這種數據庫操作,系統(tǒng)的性能必然會急劇下降,甚至會導致系統(tǒng)崩潰。數據庫連接池技術是解決這個問題最常用的方法,在許多應用程序服務器(例如:Weblogic,WebSphere,JBoss)中,基本都提供了這項技術,無需自己編程,但是,深入了解這項技術是非常必要的。
數據庫連接池技術的思想非常簡單,將數據庫連接作為對象存儲在一個Vector對象中,一旦數據庫連接建立后,不同的數據庫訪問請求就可以共享這些連接,這樣,通過復用這些已經建立的數據庫連接,可以克服上述缺點,極大地節(jié)省系統(tǒng)資源和時間。
數據庫連接池的主要操作如下: (1)建立數據庫連接池對象 (2)按照事先指定的參數創(chuàng)建初始數量的數據庫庫連接
(3)對于一個數據庫訪問請求,直接從連接池中得到一個連接。如果數據庫連接池對象中沒有空閑的連接,且連接數沒有達到最大,創(chuàng)建一個新的數據庫連接。
(4)存取數據庫。 (5)關閉數據庫,釋放所有數據庫連接。
|