亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        ADO.NET中在線處理數(shù)據(jù)的方法

        2008-12-31 00:00:00胡湘萍李彥勤
        電腦知識與技術(shù) 2008年14期

        摘要:Visual Studio.NET作為最新一代的軟件開發(fā)環(huán)境,對數(shù)據(jù)庫編程有著強大而有力支持。在.NET平臺上,Microsoft推出了最新的數(shù)據(jù)庫訪問技術(shù)ADO.NET。本文講述ADO.NET中三個常用的類(Connection、Command、DataReader)的對象,學(xué)會運用這三個類的對象來對數(shù)據(jù)源中的數(shù)據(jù)進行靈活的在線處理的方法。

        關(guān)鍵詞:連接類; 命令類;數(shù)據(jù)讀取器類

        中圖分類號:TP393文獻標(biāo)識碼:A文章編號:1009-3044(2008)14-20805-03

        1 Data Providers(數(shù)據(jù)提供者)

        簡單的理解,數(shù)據(jù)源就是數(shù)據(jù)庫,它同時也能夠是文本文件、Excel表格或者XML文件。本文將以SQL Server 2000為示例數(shù)據(jù)庫服務(wù)器,Pubs為示例數(shù)據(jù)庫,語言上選擇最適合.NET平臺的C#語言。

        ADO.NET是一組處理數(shù)據(jù)的類。應(yīng)用中可能需要與不同類型的數(shù)據(jù)源或者數(shù)據(jù)庫交互。但是并沒有這樣的一組類庫可以達到這個目的,因為各個數(shù)據(jù)源的協(xié)議各不相同,需要通過正確的協(xié)議來訪問數(shù)據(jù)源。有些比較老的數(shù)據(jù)源用ODBC協(xié)議,其后的一些數(shù)據(jù)源用OleDb協(xié)議,現(xiàn)在仍然還有許多新的數(shù)據(jù)源不斷出現(xiàn)。使用ADO.NET類庫,你可以直接訪問所有的數(shù)據(jù)源。

        ADO.NET提供了訪問數(shù)據(jù)源的公共方法,對于不同的數(shù)據(jù)源,它采用不同的類庫。這些類庫稱為Data Providers,并且通常是以數(shù)據(jù)源的類型以及協(xié)議來命名的。

        舉一個實際的例子來理解表格中的API前綴。你接觸到的第一個ADO.NET對象是連接類的對象(connection object),你可以通過它建立與數(shù)據(jù)源的連接。如果使用OleDb Data Provider連接一個提供OleDb接口的數(shù)據(jù)源,那么將使用的連接類就是OleDbConnection。同理,在本文中使用的數(shù)據(jù)源是SQL Server,所以所有的API對象都帶有Sql前綴,比如SqlConnection。針對每一種Data Provider都有相應(yīng)的命名空間,包含數(shù)據(jù)處理所需的所有的類。比如使用SqlServer數(shù)據(jù)源需要的類都包含在System.Data.SqlClient命名空間中。

        2 ADO.NET中三個對象

        ADO.NET里包括的類很抽象,經(jīng)過總結(jié)如下圖1,結(jié)合本圖先了解一下其中三個常用類的功能,然后再來應(yīng)用它們的對象進行數(shù)據(jù)處理。

        2.1 SqlConnection Object(連接類的對象)

        要訪問一個數(shù)據(jù)源,你必須先建立一個到它的連接。這個連接里描述了數(shù)據(jù)庫服務(wù)器類型、數(shù)據(jù)庫名字、用戶名、密碼,和連接數(shù)據(jù)庫所需要的其它參數(shù)。Command對象通過使用connection對象來知道是在哪個數(shù)據(jù)庫上面執(zhí)行SQL命令。

        連接對象創(chuàng)建方法如下:

        SqlConnection conn=new SqlConnection(\"Data Source=(local); Initial Catalog=Pubs; User ID=sa; password=123;\");

        對于連接類對象來說,ConnectionString屬性即說明了連接類對象的連接方法。在創(chuàng)建并初始化連接對象時可以在構(gòu)造函數(shù)中說明連接字符串屬性,當(dāng)然也可以后來再設(shè)置。連接字符串中各關(guān)鍵字的意義如下:[2]

        DataSource或Server:數(shù)據(jù)源或服務(wù)器?!?local)”表示本地服務(wù)器,此外,“.”或“l(fā)ocalhost”都表示本地服務(wù)器。

        Initial Catalog或dataBase:指定初始目錄或數(shù)據(jù)庫。

        User ID或uid:登陸服務(wù)器的賬戶名。

        Password或pwd:登陸服務(wù)器的密碼。

        連接類對象有兩個方法用來打開和關(guān)閉與數(shù)據(jù)源的連接。

        Open()方法:打開連接,應(yīng)用程序使用數(shù)據(jù)源數(shù)據(jù)之前要求調(diào)用連接類對象的此方法打開與數(shù)據(jù)源的連接。

        Close()方法:關(guān)閉連接,應(yīng)用程序使用數(shù)據(jù)源數(shù)據(jù)完畢后,最好關(guān)閉與數(shù)據(jù)源的連接,釋放所占的連接。

        2.2 SqlCommand Object(命令類的對象)

        連接數(shù)據(jù)庫后就可以開始想要執(zhí)行的數(shù)據(jù)庫操作,這個是通過command對象完成,command對象一般被用來發(fā)送SQL語句給數(shù)據(jù)庫。command對象通過connection對象得知道應(yīng)該與哪個數(shù)據(jù)庫進行連接。

        SqlCommand cmd=new SqlCommand();

        cmd.Connection=conn;

        cmd.CommandText=\"select * from users\";

        以上語句建立Command,根據(jù)習(xí)慣不同,也可以使用以下方法:

        SqlCommand cmd=new SqlCommand(\"select * from users\",conn);

        對于命令類的對象來說,CommandText屬性用于記錄下要對數(shù)據(jù)源執(zhí)行的SQL語句命令,Connection屬性用于記錄命令通過什么樣的連接訪問數(shù)據(jù)源。

        以上代碼并沒有執(zhí)行SQL語句記錄的命令,SqlCommand類的對象本身提供的三種常用的執(zhí)行命令的方法分別為:[3]

        ExecuteNonQuery()方法:非查詢類型SQL語句命令執(zhí)行方法。對連接執(zhí)行SQL語句并返回受影響的行數(shù)。當(dāng)要對數(shù)據(jù)源進行插入、刪除和更新數(shù)據(jù)時,先將命令對象的命令字符串指定到插入或更新的SQL語句,然后執(zhí)行ExecuteNonQuery()方法。當(dāng)然,執(zhí)行命令前需要打開與數(shù)據(jù)源的連接。

        ExecuteReader()方法:執(zhí)行一個select類型的SQL命令,返回一個SqlDataReader對象。調(diào)用該方法前,需要將命令字符串設(shè)置到一個Select查詢語句,然后調(diào)用該方法,返回SqlDataReader對象,該對象中保存了需要的數(shù)據(jù)。同樣的,執(zhí)行命令前需要打開數(shù)據(jù)源的連接,如果在讀取SqlDataReader對象中記錄的數(shù)據(jù)時,也不可以斷開連接。

        ExecuteScaler()方法:執(zhí)行一個SQL命令,返回記錄行的第一個字段。調(diào)用該方法前,需要將命令字符串設(shè)置到一個Select查詢語句,然后調(diào)用該方法,返回記錄行的第一個字段。執(zhí)行命令前也要打開與數(shù)據(jù)源的連接。

        由此可見,當(dāng)使用的SQL命令類型不同,在執(zhí)行命令時調(diào)用的執(zhí)行函數(shù)有所不同。

        2.3 SqlDataReader Object:數(shù)據(jù)讀取器類的對象

        通過dataReader對象,可以獲得從command對象的SELECT語句篩選的結(jié)果。dataReader返回的數(shù)據(jù)流被設(shè)計為只讀的、單向的,這將意味著你只能按照一定的順序從數(shù)據(jù)流中取出數(shù)據(jù)。這樣你獲得了性能上的提升,但是缺點也是明顯的,不能夠操作取回數(shù)據(jù),如果需要操作編輯數(shù)據(jù),解決的辦法是使用DataSet。但SqlDataReader可以快速的從數(shù)據(jù)源獲得只讀的,向前的數(shù)據(jù)流。

        ADO.NET中沒有構(gòu)造函數(shù)創(chuàng)建DataReader對象。通常使用Command類的ExecuteReader()方法來創(chuàng)建DataReader對象:

        SqlDataReader oDR=cmd.ExecuteReader();

        oDR.Read();

        函數(shù)read()用于逐條讀取數(shù)據(jù),同時光標(biāo)移到下一條記錄所在位置,返回值為一個bool值,如果讀到記錄則為true,否則為1。[4]

        ADO.NET包含了許多的Data Providers,分別用于訪問不同的數(shù)據(jù)源。然而無論使用什么樣的Data Provider,與數(shù)據(jù)源進行交互的對象的使用方法都是相似的。XxxConnection對象用于管理與數(shù)據(jù)源的連接。XxxCommand對象可以向數(shù)據(jù)源發(fā)送SQL命令。XxxDataReader可以快速從數(shù)據(jù)源獲得只讀的,向前的數(shù)據(jù)流。

        3 應(yīng)用程序處理數(shù)據(jù)源中的數(shù)據(jù)

        認識了ADO.NET中的三個基本的對象,應(yīng)用程序就可以實現(xiàn)在線處理數(shù)據(jù)。具體需要如何處理,需要結(jié)合實際情況寫出相應(yīng)的SQL語句命令,之后就可以討論如何處理數(shù)據(jù)的過程了。

        3.1 應(yīng)用程序通過dataReader對象讀數(shù)據(jù)

        通過在線的方式讀取數(shù)據(jù)源中的數(shù)據(jù)供應(yīng)用程序的使用,我們可以簡化成如下四步(見圖中豎向箭頭讀取數(shù)據(jù)的方式):

        (1)建連接:建立與數(shù)據(jù)源的連接對象。

        (2)建命令:建立要對數(shù)據(jù)源執(zhí)行的命令對象。

        (3)執(zhí)行命令:執(zhí)行命令對象中記錄的SQL語句命令。

        (4)讀數(shù)據(jù):應(yīng)用程序讀取dataReader對象中記錄的數(shù)據(jù)。

        例如://建連接

        SqlConnection conn=new SqlConnection(“Data Source=(local);

        Initial Catalog=Northwind;User ID=sa ; password=1234;”);

        //建命令

        SqlCommand cmd=new SqlCommand(“select * from authors”,conn);

        //執(zhí)行命令

        conn.Open();

        SqlDataReader dr=cmd.ExecuteReader();

        //讀數(shù)據(jù)

        while(dr.Read())

        {

        ……

        }

        dr.Close();

        conn.Close();

        3.2 應(yīng)用程序直接對數(shù)據(jù)源進行數(shù)據(jù)添加、修改或刪除

        倘若應(yīng)用程序需要對數(shù)據(jù)源中的數(shù)據(jù)進行添加、修改或是刪除。那么我們可以把此過程簡化成如下三步(見圖中向右處理數(shù)據(jù)的方式):

        (1)建連接:建立與數(shù)據(jù)源的連接對象。

        (2)建命令:建立要對數(shù)據(jù)源執(zhí)行的命令對象。

        (3)執(zhí)行命令:執(zhí)行命令對象中記錄的SQL語句命令。

        例如:

        //建連接

        SqlConnection conn=new SqlConnection(\"Data Source=(local); Initial Catalog=Pubs; User ID=sa; password=1234;\");//建命令

        SqlCommand cmd=new SqlCommand(\"update authors set London='倫敦' where city='London'\",conn);

        //執(zhí)行命令

        conn.Open();

        cmd.ExecuteNonQuery();

        conn.Close();

        4 結(jié)束語

        本文講述的是ADO.NET中在線處理數(shù)據(jù)的一種方式。結(jié)合圖形,相信對于Connection、Command、DataReader這三個非常抽象的類的對象的學(xué)習(xí)會有很大的幫助。當(dāng)然本文重在結(jié)合三個對象處理數(shù)據(jù)的過程。對于每一類對象的知識細節(jié)還需讀者深入學(xué)習(xí)。應(yīng)用程序處理數(shù)據(jù)還有另外一種比較特色的方式,即離線處理數(shù)據(jù)。與本文中提到的在線處理數(shù)據(jù)方式有著很多的相同與不同之處,各有優(yōu)缺點,還需要進一步學(xué)習(xí)。

        參考文獻:

        [1] 參考網(wǎng)絡(luò)相關(guān)文章. http://blog.sina.com.cn/s/blog_54d1fb35010007rb.html.

        [2] 李律松, 等. Visual C#數(shù)據(jù)庫高級教程[M]. 清華大學(xué)出版式社.

        [3] Simon Robinson, Christian Nagel, 等. C#高級編程(第3版)[M].

        [4] 李德奇. C#程序設(shè)計[M]. 科學(xué)出版社.

        注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文

        熟妇人妻久久中文字幕| 国产风骚主播视频一区二区| 久久婷婷综合色拍亚洲| 亚洲av性色精品国产| 国产亚洲一区二区三区| 亚洲av无码专区在线| 久久久国产乱子伦精品作者| 一群黑人大战亚裔女在线播放| 成年女人窝窝视频| 亚洲国产都市一区二区| 极品人妻少妇av免费久久| 亚洲午夜福利在线视频| 国产白嫩美女在线观看| 国精品无码一区二区三区在线看| 亚洲一区二区三区天堂av| 亚洲国产中文字幕无线乱码| 久久久久99精品成人片| 亚洲精品无码成人片久久不卡 | 欧美综合图区亚洲综合图区| 久久精品一区一区二区乱码| 日本成本人片视频免费| 国产精品国产三级国产av′| 人妻少妇人人丰满视频网站| 一本之道加勒比在线观看| 亚洲国产色一区二区三区 | 曰批免费视频播放免费直播| 欧美精品区| 国产精品亚洲综合天堂夜夜| 精品亚洲一区二区三区在线播放| 日日拍夜夜嗷嗷叫国产| 人妻av中文字幕无码专区| 欧美中文字幕在线| 亚洲欧洲国无码| 老女人下面毛茸茸的视频| 制服丝袜中文字幕在线| 国产成人精品无码播放| 亚洲夫妻性生活视频网站| 国产成人精品一区二三区孕妇| √天堂中文官网在线| 四虎影视在线观看2413| 国产在线h视频|