ASP.NET - 数据库连接

ADO.NET 同样是 .NET 框架的组成部分。

ADO.NET 的职能是处理数据访问。通过 ADO.NET,您就可以操作数据库了。

实例

数据库连接 - 绑定到 Repeater 控件

  1. <%@ Import Namespace="System.Data.OleDb" %>
  2. <script runat="server">
  3. sub Page_Load
  4. dim dbconn,sql,dbcomm,dbread
  5. dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & server.mappath("/db/northwind.mdb"))
  6. dbconn.Open()
  7. sql="SELECT * FROM customers"
  8. dbcomm=New OleDbCommand(sql,dbconn)
  9. dbread=dbcomm.ExecuteReader()
  10. customers.DataSource=dbread
  11. customers.DataBind()
  12. dbread.Close()
  13. dbconn.Close()
  14. end sub
  15. </script>
  16. <html>
  17. <body>
  18. <form runat="server">
  19. <asp:Repeater id="customers" runat="server">
  20. <HeaderTemplate>
  21. <table border="1" width="100%">
  22. <tr bgcolor="#b0c4de">
  23. <th>Companyname</th>
  24. <th>Contactname</th>
  25. <th>Address</th>
  26. <th>City</th>
  27. </tr>
  28. </HeaderTemplate>
  29. <ItemTemplate>
  30. <tr bgcolor="#f0f0f0">
  31. <td><%#Container.DataItem("companyname")%> </td>
  32. <td><%#Container.DataItem("contactname")%> </td>
  33. <td><%#Container.DataItem("address")%> </td>
  34. <td><%#Container.DataItem("city")%> </td>
  35. </tr>
  36. </ItemTemplate>
  37. <FooterTemplate>
  38. </table>
  39. </FooterTemplate>
  40. </asp:Repeater>
  41. </form>
  42. </body>
  43. </html>

数据库连接 - 绑定到 DataList 控件

  1. <%@ Import Namespace="System.Data.OleDb" %>
  2. <script runat="server">
  3. sub Page_Load
  4. dim dbconn,sql,dbcomm,dbread
  5. dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & server.mappath("/db/northwind.mdb"))
  6. dbconn.Open()
  7. sql="SELECT * FROM customers"
  8. dbcomm=New OleDbCommand(sql,dbconn)
  9. dbread=dbcomm.ExecuteReader()
  10. customers.DataSource=dbread
  11. customers.DataBind()
  12. dbread.Close()
  13. dbconn.Close()
  14. end sub
  15. </script>
  16. <html>
  17. <body>
  18. <form runat="server">
  19. <asp:DataList
  20. id="customers"
  21. runat="server"
  22. cellpadding="2"
  23. cellspacing="2"
  24. borderstyle="inset"
  25. backcolor="#e8e8e8"
  26. width="100%"
  27. headerstyle-font-name="Verdana"
  28. headerstyle-font-size="12pt"
  29. headerstyle-horizontalalign="center"
  30. headerstyle-font-bold="True"
  31. itemstyle-backcolor="#778899"
  32. itemstyle-forecolor="#ffffff"
  33. footerstyle-font-size="9pt"
  34. footerstyle-font-italic="True">
  35. <HeaderTemplate>
  36. Customers Table
  37. </HeaderTemplate>
  38. <ItemTemplate>
  39. <%#Container.DataItem("companyname")%> in
  40. <%#Container.DataItem("address")%>, <%#Container.DataItem("city")%>
  41. </ItemTemplate>
  42. <FooterTemplate>
  43. Source: Northwind Database
  44. </FooterTemplate>
  45. </asp:DataList>
  46. </form>
  47. </body>
  48. </html>

什么是 ADO.NET?

  • ADO.NET 是 .NET 框架的组成部分
  • ADO.NET 由一系列用于操作数据访问的类组成
  • ADO.NET 完全基于 XML
  • ADO.NET 没有 Recordset 对象,这一点与 ADO 不同

创建数据库连接

我们打算使用曾经使用过的 Northwind 数据库。

首先,导入命名空间 "System.Data.OleDb"。我们需要该命名空间,以便可以操作 Microsoft Access 以及其他的 OLE DB 数据库提供者。我们将在 Page_Load 子例程中创建对此数据库的连接。我们创建了一个 dbconn 变量,并把新的 OleDbConnection 类赋值给这个变量,这个 OleDbConnection 类带有一个连接字符串,可以指示 OLE DB 以及数据库的位置。然后我们打开此数据库连接:

  1. <%@ Import Namespace="System.Data.OleDb" %>
  2.  
  3. <script runat="server">
  4. sub Page_Load
  5. dim dbconn
  6. dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
  7. data source=" & server.mappath("northwind.mdb"))
  8. dbconn.Open()
  9. end sub
  10. </script>

注释:这个连接字符串必须是没有折行的连续字符串!

创建数据库命令

为了指定需从数据库取回的记录,我们将创建一个 dbcomm 变量,并为其赋值一个新的 OleDbCommand。这个 OleDbCommand 类用于发出针对数据库表的 SQL 查询:

  1. <%@ Import Namespace="System.Data.OleDb" %>
  2.  
  3. <script runat="server">
  4. sub Page_Load
  5. dim dbconn,sql,dbcomm
  6. dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
  7. data source=" & server.mappath("northwind.mdb"))
  8. dbconn.Open()
  9. sql="SELECT * FROM customers"
  10. dbcomm=New OleDbCommand(sql,dbconn)
  11. end sub
  12. </script>

创建 DataReader

OleDbDataReader 类用于从数据源中读取记录流。通过调用 OleDbCommand 对象的 ExecuteReader 方法,就可以创建 DataReader:

  1. <%@ Import Namespace="System.Data.OleDb" %>
  2.  
  3. <script runat="server">
  4. sub Page_Load
  5. dim dbconn,sql,dbcomm,dbread
  6. dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
  7. data source=" & server.mappath("northwind.mdb"))
  8. dbconn.Open()
  9. sql="SELECT * FROM customers"
  10. dbcomm=New OleDbCommand(sql,dbconn)
  11. dbread=dbcomm.ExecuteReader()
  12. end sub
  13. </script>

绑定到 Repeater 控件

然后,我们把这个 DataReader 绑定到一个 Repeater 控件:

  1. <%@ Import Namespace="System.Data.OleDb" %>
  2.  
  3. <script runat="server">
  4. sub Page_Load
  5. dim dbconn,sql,dbcomm,dbread
  6. dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
  7. data source=" & server.mappath("northwind.mdb"))
  8. dbconn.Open()
  9. sql="SELECT * FROM customers"
  10. dbcomm=New OleDbCommand(sql,dbconn)
  11. dbread=dbcomm.ExecuteReader()
  12. customers.DataSource=dbread
  13. customers.DataBind()
  14. dbread.Close()
  15. dbconn.Close()
  16. end sub
  17. </script>
  18.  
  19. <html>
  20. <body>
  21.  
  22. <form runat="server">
  23. <asp:Repeater id="customers" runat="server">
  24.  
  25. <HeaderTemplate>
  26. <table border="1" width="100%">
  27. <tr>
  28. <th>Companyname</th>
  29. <th>Contactname</th>
  30. <th>Address</th>
  31. <th>City</th>
  32. </tr>
  33. </HeaderTemplate>
  34.  
  35. <ItemTemplate>
  36. <tr>
  37. <td><%#Container.DataItem("companyname")%></td>
  38. <td><%#Container.DataItem("contactname")%></td>
  39. <td><%#Container.DataItem("address")%></td>
  40. <td><%#Container.DataItem("city")%></td>
  41. </tr>
  42. </ItemTemplate>
  43.  
  44. <FooterTemplate>
  45. </table>
  46. </FooterTemplate>
  47.  
  48. </asp:Repeater>
  49. </form>
  50.  
  51. </body>
  52. </html>

关闭数据库连接

在不在需要访问数据库后,请记得始终将 DataReader 和数据库连接关闭:

  1. dbread.Close()
  2. dbconn.Close()