日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

连接模式数据访问

發(fā)布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 连接模式数据访问 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

連接模式數(shù)據(jù)訪問

ADO.NET Framework中提供了大量的類,但其核心事實上是由以下三個類組成的。

Connection--用于表示數(shù)據(jù)源的連接。

Command--用于執(zhí)行應(yīng)用于數(shù)據(jù)源的命令。

DataReader--用于表示從數(shù)據(jù)源獲取的數(shù)據(jù)。

ADO.NET Framework中的其他大多數(shù)類都是由這三個類構(gòu)建而來。這三個類提供了訪問數(shù)據(jù)庫數(shù)據(jù)最基本的方法,可以用它們來連接數(shù)據(jù)庫、執(zhí)行數(shù)據(jù)庫命令,并表示從數(shù)據(jù)庫返回的結(jié)果數(shù)據(jù)。

現(xiàn)在應(yīng)該明白這三個類的重要性了,但事實上這三個類是不存在的。ADO.NET使用接口提供(Provider)模型,因此它實際上使用了多組不同的ADO.NET數(shù)據(jù)訪問類來與不同的數(shù)據(jù)源進(jìn)行通信。

例如,實際上在前面提到的Connection類并不存在。相反地,實際上真正存在的是SqlConnection類、OracleConnection類、OleDbConnection類和ODBCConnection類。這些不同的類分別用來連接不同的數(shù)據(jù)源。

Connection、Command和DataReader類的不同實現(xiàn)被組織在下面的命名空間中。

System.Data.SqlClient--包含用于連接微軟SQL Server 7.0或更高版本數(shù)據(jù)庫的ADO .NET類。

System.Data.OleDb--包含用于連接OLEDB接口數(shù)據(jù)源的ADO.NET類。

System.Data.OracleClient--包含用于連接Oracle數(shù)據(jù)庫(需要Oracle 8i R3 [8.1.7]客戶端或更高版本)的ADO.NET類。

System.Data.SqlServerCe--包含用于連接微軟SQL Server數(shù)據(jù)庫Mobile版的ADO.NET類。

如果連接到微軟SQL Server 7.0或更高版本的數(shù)據(jù)庫,就應(yīng)該盡量使用來自SqlClient命名空間的類。這些類會提供最佳的訪問性能,因為它們直接連接SQL Server數(shù)據(jù)庫的表格化數(shù)據(jù)流(Tabular Data Stream, TDS)層(TDS是微軟SQL Server數(shù)據(jù)庫用來與應(yīng)用程序進(jìn)行通信的底層協(xié)議)。

當(dāng)然,大家使用的并不是只有微軟SQL Server一種數(shù)據(jù)庫。如果要與Oracle數(shù)據(jù)庫通信,就應(yīng)該使用來自O(shè)racleClient命名空間的類。如果還要與其他類型的數(shù)據(jù)庫進(jìn)行通信,就應(yīng)該使用來自O(shè)leDb或Odbc命名空間的類。幾乎所有數(shù)據(jù)庫都配備了OLEDB提供程序和ODBC數(shù)據(jù)驅(qū)動接口。

由于ADO.NET遵循接口提供(Provider)模型,所以所有Connection、Command和DataReader的實現(xiàn)都繼承自其對應(yīng)的基類。這些基類分別是如下三種。

DbConnection--所有Connection類的基類。

DbCommand--所有Command類的基類。

DbDataReader--所有DataReader類的基類。

這些基類都包含在命名空間System.Data.Common中。

本章中所有的示例代碼都假定工作在微軟SQL Server數(shù)據(jù)庫上,因此所有示例代碼中使用的類都來自SqlClient命名空間。同時,由于ADO.NET使用接口提供模型,因此在其他數(shù)據(jù)庫中使用的數(shù)據(jù)訪問方法和本章所介紹的方法非常類似。

注解?要在組件和頁面中使用SqlClient命名空間提供的類之前,需要首先導(dǎo)入System.Data. SqlClient命名空間。

在詳細(xì)討論Connection、Command和DataReader類之前,讓我們來看看如何使用這些類來構(gòu)建簡單的數(shù)據(jù)訪問組件。代碼清單17-1中的組件名為Movie1,包含一個從數(shù)據(jù)庫表Movies中返回所有記錄的方法GetAll()。

代碼清單17-1? App_Code/Movie1.cs

using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.Configuration;
using System.Collections.Generic; public class Movie1
{
private static readonly string _connectionString; ??? private string _title;
private string _director; ??? public string Title
{
get { return _title; }
set { _title = value; }
} ??? public string Director
{
get { return _director; }
set { _director = value; }
} ??? public List<Movie1> GetAll()
{
List<Movie1> results = new List<Movie1>();
SqlConnection con = new SqlConnection(_connectionString);
SqlCommand cmd = new SqlCommand("SELECT
Title,Director FROM Movies", con);
using (con)
{
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Movie1 newMovie = new Movie1();
newMovie.Title = (string)reader["Title"];
newMovie.Director = (string)reader["Director"];
results.Add(newMovie);
}
}
return results;
} ??? static Movie1()
{
_connectionString = WebConfigurationManager.
ConnectionStrings["Movies"].ConnectionString;
}
}

代碼清單17-1中,SqlConnection對象用來表示連到微軟SQL Server數(shù)據(jù)庫上的一個連接,SqlCommand對象用來表示一個SQL SELECT命令,而命令執(zhí)行的結(jié)果表示為了一個SqlDataReader對象。

通過循環(huán)調(diào)用SqlDataReader.Read()方法,可以獲得執(zhí)行SELECT命令后所返回的每一行數(shù)據(jù)。當(dāng)SELECT命令結(jié)果集中的最后一行數(shù)據(jù)被返回后,SqlDataReader.Read()方法返回false并應(yīng)結(jié)束循環(huán)。

數(shù)據(jù)庫中返回的所有數(shù)據(jù)行被添加到了一個列表(List)集合中。Movie1類的一個實例用來表示所有查詢記錄。

代碼清單17-2中的頁面將使用GridView和ObjectDataSource控件來顯示數(shù)據(jù)訪問組件Movie1所返回的電影信息記錄(見圖17-1)。

代碼清單17-2? ShowMovie1.aspx

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Show Movie1</title>
</head>
<body>
<form id="form1" runat="server">
<div>

<asp:GridView
id="grdMovies"
DataSourceID="srcMovies"
Runat="server" />

<asp:ObjectDataSource
id="srcMovies"
TypeName="Movie1"
SelectMethod="GetAll"
Runat="server" />

</div>
</form>
</body>
</html>
?
(點擊查看大圖)圖17-1? 顯示電影信息記錄

?

【責(zé)任編輯:云霞 TEL:(010)68476606】

總結(jié)

以上是生活随笔為你收集整理的连接模式数据访问的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。