ASP.NET - 數(shù)據(jù)庫連接
ADO.NET 同樣是 .NET 框架的組成部分。
ADO.NET 的職能是處理數(shù)據(jù)訪問。通過 ADO.NET,您就可以操作數(shù)據(jù)庫了。
什么是 ADO.NET?
- ADO.NET 是 .NET 框架的組成部分
- ADO.NET 由一系列用于操作數(shù)據(jù)訪問的類組成
- ADO.NET 完全基于 XML
- ADO.NET 沒有 Recordset 對象,這一點(diǎn)與 ADO 不同
創(chuàng)建數(shù)據(jù)庫連接
我們打算使用曾經(jīng)使用過的 Northwind 數(shù)據(jù)庫。
首先,導(dǎo)入命名空間 "System.Data.OleDb"。我們需要該命名空間,以便可以操作 Microsoft Access 以及其他的 OLE DB 數(shù)據(jù)庫提供者。我們將在 Page_Load 子例程中創(chuàng)建對此數(shù)據(jù)庫的連接。我們創(chuàng)建了一個(gè) dbconn 變量,并把新的 OleDbConnection 類賦值給這個(gè)變量,這個(gè) OleDbConnection 類帶有一個(gè)連接字符串,可以指示 OLE DB 以及數(shù)據(jù)庫的位置。然后我們打開此數(shù)據(jù)庫連接:
<%@ Import Namespace="System.Data.OleDb" %>
<script runat="server">
sub Page_Load
dim dbconn
dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
data source=" & server.mappath("northwind.mdb"))
dbconn.Open()
end sub
</script>
注釋:這個(gè)連接字符串必須是沒有折行的連續(xù)字符串!
創(chuàng)建數(shù)據(jù)庫命令
為了指定需從數(shù)據(jù)庫取回的記錄,我們將創(chuàng)建一個(gè) dbcomm 變量,并為其賦值一個(gè)新的 OleDbCommand。這個(gè) OleDbCommand 類用于發(fā)出針對數(shù)據(jù)庫表的 SQL 查詢:
<%@ Import Namespace="System.Data.OleDb" %>
<script runat="server">
sub Page_Load
dim dbconn,sql,dbcomm
dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
data source=" & server.mappath("northwind.mdb"))
dbconn.Open()
sql="SELECT * FROM customers"
dbcomm=New OleDbCommand(sql,dbconn)
end sub
</script>
創(chuàng)建 DataReader
OleDbDataReader 類用于從數(shù)據(jù)源中讀取記錄流。通過調(diào)用 OleDbCommand 對象的 ExecuteReader 方法,就可以創(chuàng)建 DataReader:
<%@ Import Namespace="System.Data.OleDb" %>
<script runat="server">
sub Page_Load
dim dbconn,sql,dbcomm,dbread
dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
data source=" & server.mappath("northwind.mdb"))
dbconn.Open()
sql="SELECT * FROM customers"
dbcomm=New OleDbCommand(sql,dbconn)
dbread=dbcomm.ExecuteReader()
end sub
</script>
綁定到 Repeater 控件
然后,我們把這個(gè) DataReader 綁定到一個(gè) Repeater 控件:
<%@ Import Namespace="System.Data.OleDb" %>
<script runat="server">
sub Page_Load
dim dbconn,sql,dbcomm,dbread
dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
data source=" & server.mappath("northwind.mdb"))
dbconn.Open()
sql="SELECT * FROM customers"
dbcomm=New OleDbCommand(sql,dbconn)
dbread=dbcomm.ExecuteReader()
customers.DataSource=dbread
customers.DataBind()
dbread.Close()
dbconn.Close()
end sub
</script>
<html>
<body>
<form runat="server">
<asp:Repeater id="customers" runat="server">
<HeaderTemplate>
<table border="1" width="100%">
<tr>
<th>Companyname</th>
<th>Contactname</th>
<th>Address</th>
<th>City</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Container.DataItem("companyname")%></td>
<td><%#Container.DataItem("contactname")%></td>
<td><%#Container.DataItem("address")%></td>
<td><%#Container.DataItem("city")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>
關(guān)閉數(shù)據(jù)庫連接
在不在需要訪問數(shù)據(jù)庫后,請記得始終將 DataReader 和數(shù)據(jù)庫連接關(guān)閉:
dbread.Close() dbconn.Close()