亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ADO.NET數據庫訪問技術

2019-11-17 02:09:42
字體:
來源:轉載
供稿:網友

ADO.NET數據庫訪問技術

一. ADO.NET的定義

ADO.NET來源于COM組件庫ADO(即ActiveX Data Objects),是微軟公司新一代.NET數據庫的訪問模型,是目前數據庫程序設計人員用來開發基于.NET的數據庫應用程序的主要接口。它利用.NET Data PRovider(數據提供程序)進行數據庫的連接和訪問,通過ADO.NET數據庫程序能夠使用各種對象來訪問符合條件的數據庫內容,讓提供數據庫管理系統的各個廠商可以根據此標準開放對應的.NET Data Provider,這樣設計數據庫應用程序人員不必了解各類數據庫底層運作的細節,只要掌握ADO.NET所提供對象的模型,便可訪問所有支持.NET Data Provider的數據庫。

ADO.NET結構模型如下所示:

圖1. ADO.NET結構模型

ADO.NET是一個類庫,這些類提供了很多的對象,可用于完成數據庫連接和增刪查改等操作。其中包括如下五個對象: 1)Connection:用來連接數據庫(SQL Server使用的是SqlConnection對象); 2)Command:用來對數據庫執行SQL命令,如增刪查改等操作; 3)DataReader:用來從數據庫中返回只讀數據,用數據源填充DataSet對象; 4)DataAdapter:與DataSet對象相結合使用,實現對數據庫的控制; 5)DataSet:可看作離線時內存中的數據庫; 這五個對象提供了兩種讀取數據庫的方式; 第一種方式:使用Connection、Command、DataReader,其權限只能讀取或查詢數據庫; 第二種方式:使用Connection、Command、DataAdapter、DataSet,其權限能進行各種數據庫的操作。 ADO.NET讀取數據庫操作示意圖:

圖2. ADO.NET讀取數據庫示意圖

二. 使用ADO.NET在線訪問數據庫的步驟(這里用的是SQL Server 數據庫)

1. 連接數據庫

直接上一段代碼:

using System.Data.SqlClient;string source = "server=(local); integrated security=SSPI; database=myDateabase;User ID=sa;pwd=sa"; SqlConnection conn = new SqlConnection(source); conn.Open(); // 對數據庫數據進行操作 conn.Close();

(1). 首先添加命名空間System.Data.SqlClient; (2). 定義數據庫連接字符串: 第一種方法:直接把數據庫連接字符串存放在字符串對象中,如上代碼所示; 第二種方法Web:將數據庫連接信息存放在web.config配置文件中,然后通過使用ConfigurationStringSettings類進行調用。來個例子說明一下: (a). 首先,在web.config配置文件的部分定義數據庫連接信息:

<configuration><connectionStrings><add name="myDatabase" connectionString="server=(local); integrated security=SSPI; database=myDateabase;User ID=sa;pwd=sa" providerName="System.Data.SqlClient" /></connectionStrings></configuration>

(b). 在項目文件中,添加對Configuration的引用,在頭部添加using System.Configuration。然后定義數據庫連接字符串為:

string connstring = ConfigurationManager.ConnectionStrings["myDatabase"].ConnectionString;

備注:必須添加對System.Configuration程序集的引用,才能解析上述代碼中使用的ConfigurationManager類。

2. 創建數據庫連接

1)創建Connection對象: string conn = new SqlConnection(connString); 2)打開數據庫: conn.Open(); 一般情況下,當在.NET中使用“稀缺”的資源時,如數據庫連接、窗口或圖形對象,最好確保每個資源在使用完畢后立即關閉。盡管.NET的設計人員實現了自動垃圾收集機制,垃圾最終會被回收,但仍需要盡可能早地釋放資源,以避免出現資源匱乏的情況。 當編寫訪問數據庫的代碼時,因為使連接打開的時間略長于需要的時間,就可能影響其他會話。在極端的情況下,不關閉連接可能會使其他用戶無法進入一整組數據表,極大地降低應用程序的性能。主要有兩種方式可以確保數據庫連接等類似的“稀缺”資源在使用完后立即釋放。這兩種方式如下: (1)第一種方式:采用try...catch...finally語句塊 確保在finally中關閉任何已打開的連接。

try { // open the connection conn.Open(); // 對數據庫數據進行操作 } catch (SqlException ex) { // log the exception } finally { conn.Close(); }

在給定的方法中可能會打開許多資源,這樣try...catch...finally塊的層次有時候不容易看清。還有一種方式可以確保資源的關閉——using語句。 (2)使用using語句塊

using(SqlConnection conn = new SqlConnection(connstring)){ // Open the connection conn.Open(); // 對數據庫數據進行操作 }

無論塊是如何退出的,using子句都會確保關閉數據庫連接。

3. 創建數據庫操作命令:

Connection對象與數據源建立連接后,使用Command對象對數據源執行查詢、插入、修改和刪除等操作。 (1) 創建SQL數據庫操作命令: sqlQuery查詢語句具體規則請詳見我的系列文章:【讀書筆記】SQL Server查詢語句_鄧智容 (2) 創建Command對象: (a). 方法一: SqlCommand command = new SqlCommand(); command.Connection = conn; command.CommandText = "SQL語句"; (b). 方法二: SqlCommand command = new SqlCommand("SQL語句", conn); 備注: 1). SQL查詢語句若含有C#程序的變量并以字符串形式連接,則應注意數據為非數字的變量應用單引號括起來; 2). 在SQL查詢語句中使用參數化查詢語句的話,譬如: command.CommandText = "SELECT * FROM myTable WHERE siteName=@siteName"; 當需要給該參數賦值時,可以使用Command對象建立參數對象,然后再賦值: command.Parameters.Add(new SqlParameter(@siteName, siteName)); command.Parameters["@siteName"].Value = "http://#"; 備注: 在.Net Framework 2.0中SqlClient增加了AddWithValue(string parameterName, object value)方法。該方法簡化了調用儲存過程的輸入參數過程,在運行時對所輸入的數據類型進行判斷,獲取對應的數據庫類型。 因此該方法在運行效率上比用 Add(string parameterName, SqlDbType sqlDbType, int size, string sourceColumn)方法要低。 在效率要求較高的地方仍然建議使用Add()方法,其它場合可以使用AddWithValue()簡化代碼編寫量。

4. 執行sqlQuery命令:

定義好命令后,就需要執行它。執行的語句有多種方式,這取決于要從命令中返回什么數據。Command類提供了下述可執行的命令: (1) ExecuteNonQuery() —— 執行命令,但不返回任何結果。一般用于UPDATE、INSERT或DELETE語句中,其中唯一的返回值是受影響的記錄個數。但如果調用帶有輸出參數的存儲過程,該方法就有返回值。 (2) ExecuteReader() —— 執行命令,返回一個類型化的IDataReader。是從數據源中選擇某些數據的最簡單快捷的方法。 (3) ExecuteScalar() —— 執行命令,返回結果集中的第一行第一列的值。

5. 對數據庫操作完畢后關閉數據庫連接:

conn.Close();

三. 離線數據庫訪問

DataAdapter對象主要在Connection對象和DataSet對象之間執行數據的傳輸工作,將數據填充到DataSet對象中,也可把DataSet對象更新后的數據返回到數據源中,也可架構在Command對象上,通過CommandBuilding對象生成DataAdapter的Insert、Update和Delete等SQL操作命令。使用DataSet和DataTable對象訪問數據源后,ADO.NET會自動離線,在內存中處理數據,如有修改數據的操作,將自動重新連接數據源,更新數據庫。DataSet對象、DataAdapter對象與數據源之間的關系如下:

DataSet <---> DataAdapter <---> 數據源

下面是使用DataAdapter進行離線數據庫訪問的操作步驟: 1. 創建DataAdapter、DataTable對象(使用的是SQL Server數據庫) SqlAdapter da = new SqlAdapter("sqlQuery查詢語句", conn); DataSet = ds = new DataSet(); DataTable dt = new DataTable(); 2. 將數據填充到DataTable對象 da.Fill(ds, "TableName"); dt = ds.Tables["TableName"]; 3. 對DataTable中的數據進行處理 TataTable對象的屬性和方法有:

名稱屬性/方法說明
Rows.Add()方法插入新數據行
Rows[n].Delete()方法刪除第n行的記錄
Rows.Count屬性獲取行數
Rows[i]["ColumnName"]屬性獲取第i行、列名為ColumnName的值
Rows[i][j]屬性獲取第i行、第j列的值

還有一種數據查詢技術:LINQ。下回再討論。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内久久久精品| 亚洲精品电影在线观看| 性日韩欧美在线视频| 日韩电视剧在线观看免费网站| 欧美日韩福利在线观看| 日韩高清有码在线| 欧美肥老妇视频| 欧美激情2020午夜免费观看| 欧美激情在线播放| 欧美贵妇videos办公室| 亚洲第一福利视频| 亚洲网在线观看| 青青青国产精品一区二区| 国产精品96久久久久久| 日韩免费中文字幕| 亚洲影院在线看| 日韩视频在线观看免费| 日韩精品免费在线观看| 久久久亚洲精品视频| 色婷婷综合久久久久| 国产成人精品一区二区在线| 伊是香蕉大人久久| 疯狂做受xxxx欧美肥白少妇| 亚洲国产欧美一区二区三区同亚洲| 永久555www成人免费| 久久国产视频网站| 国产精品一区二区久久国产| 91亚洲国产精品| 亚洲欧美在线磁力| 国产精品中文字幕在线| 亚洲精品电影网| 中日韩美女免费视频网址在线观看| 亚洲国产天堂网精品网站| 久久男人av资源网站| 日韩中文字在线| 久久亚洲国产精品| 亚洲女人天堂成人av在线| 91精品国产综合久久男男| 亚洲国产一区二区三区在线观看| 在线成人激情黄色| 国产一区二区三区久久精品| 亚洲精品美女久久| 欧美日韩国产麻豆| 欧美又大又硬又粗bbbbb| 亚洲视频777| 久久视频在线观看免费| 国内精品小视频在线观看| 国产精品久久97| 5278欧美一区二区三区| 欧美日韩精品中文字幕| 欧美日本在线视频中文字字幕| 中文字幕亚洲一区在线观看| 日韩有码在线播放| 日韩在线国产精品| 久久精品视频在线| 久久久久久久国产精品视频| 亚洲国产精品久久| 国产91在线播放| 97精品一区二区视频在线观看| 少妇av一区二区三区| 国产成人拍精品视频午夜网站| 日韩视频永久免费观看| 国产99在线|中文| 国产日韩精品视频| 久久香蕉国产线看观看网| 最近2019中文字幕大全第二页| 亚洲欧美国内爽妇网| 最近2019中文字幕在线高清| 九九视频直播综合网| 国产日产欧美a一级在线| 亚洲精品美女在线观看播放| 久久成人一区二区| 日韩小视频在线| 成人久久久久久久| 欧美老女人www| 国产精品视频色| 亚洲成年人影院在线| 亚洲第一区第二区| 欧美日本黄视频| 国产精品久久久久久久美男| 欧美精品在线极品| 久久久久久久久久久久久久久久久久av| 成人观看高清在线观看免费| 国产欧美精品一区二区三区介绍| 5566成人精品视频免费| 国产99视频在线观看| 欧美激情精品久久久久久| 亚洲自拍偷拍福利| 日韩精品中文字幕视频在线| 影音先锋日韩有码| 91欧美精品午夜性色福利在线| 国产日韩欧美91| 久久久国产视频91| 亚洲国模精品一区| 91精品国产免费久久久久久| 亚洲美女中文字幕| 91精品国产高清久久久久久| 日韩激情视频在线播放| 亚洲男人天堂网站| 欧美性受xxxx黑人猛交| 亚州精品天堂中文字幕| 成人激情视频免费在线| 成人免费在线视频网址| 欧美大胆a视频| 国产精品爱久久久久久久| 久久久www成人免费精品张筱雨| 久久久久久网址| 国产成一区二区| 国产一区欧美二区三区| 精品亚洲一区二区三区四区五区| 亚洲天堂av综合网| 性欧美激情精品| 在线中文字幕日韩| 欧美成人免费小视频| 久久精品夜夜夜夜夜久久| 中文字幕亚洲天堂| 欧美黑人性视频| 国产精品视频一区国模私拍| 国产精品网站大全| 日韩国产在线看| 欧美高清在线播放| 日韩电影中文 亚洲精品乱码| 亚洲精品电影网站| 91美女片黄在线观| 国外成人性视频| 亚洲日本欧美中文幕| 久久久久久久999| 欧美成人精品影院| 久久亚洲欧美日韩精品专区| 久久网福利资源网站| 中文字幕综合一区| 国产精品永久免费视频| 久久久久久久久久国产精品| 国产精品av在线播放| 久久久久久免费精品| 国产噜噜噜噜噜久久久久久久久| 最近的2019中文字幕免费一页| 国产亚洲精品va在线观看| 美女撒尿一区二区三区| 亚洲第一av网| 亚洲美女福利视频网站| 亚洲第一页自拍| 26uuu另类亚洲欧美日本老年| 精品在线小视频| 亚洲电影免费观看高清完整版在线| 欧美日韩不卡合集视频| 中文字幕日韩欧美精品在线观看| 色吧影院999| 91在线免费视频| 亚洲四色影视在线观看| 久久露脸国产精品| xvideos国产精品| 国产成人亚洲综合| 亚洲性线免费观看视频成熟| 欧美在线视频网站| 国产精品第七影院| 日韩成人av在线| 国产激情久久久| 日韩欧亚中文在线| 69视频在线免费观看| 91最新在线免费观看| 日韩美女视频在线观看| 亚洲欧美精品一区二区| 热门国产精品亚洲第一区在线|