• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    C#數(shù)據(jù)庫應(yīng)用編程探析

    2014-09-24 00:07:42柴君
    無線互聯(lián)科技 2014年7期
    關(guān)鍵詞:數(shù)據(jù)源語句代碼

    柴君

    摘要:C#數(shù)據(jù)庫程序設(shè)計(jì)是基于.NET平臺(tái)的,在應(yīng)用程序需要訪問數(shù)據(jù)庫時(shí)使用ADO.NET來實(shí)現(xiàn)數(shù)據(jù)庫訪問。本文在簡(jiǎn)介ADO.NET的基礎(chǔ)上,重點(diǎn)探析ADO數(shù)據(jù)庫編程的應(yīng)用步驟及相關(guān)技術(shù),從而使學(xué)生在完成面向?qū)ο驝#和數(shù)據(jù)庫課程的學(xué)習(xí)后,能有一個(gè)兩門課程的結(jié)合點(diǎn)。

    關(guān)鍵詞:C#;ADO.NET;數(shù)據(jù)庫編程在本學(xué)院軟件技術(shù)專業(yè)的課程體系當(dāng)中,面向?qū)ο笳n程和數(shù)據(jù)庫課程在同一個(gè)學(xué)期中開設(shè)。其中的面向?qū)ο笳n程以C#語言為依托,重點(diǎn)學(xué)習(xí)面向?qū)ο蟮膶?shí)現(xiàn)技術(shù),而數(shù)據(jù)庫以SQL Server為依托,重點(diǎn)學(xué)習(xí)T-SQL語句實(shí)現(xiàn)的增刪改查,兩門課程相對(duì)比較獨(dú)立。為了有效地將兩門課程結(jié)合起來,在完成主體知識(shí)學(xué)習(xí)之后的集中實(shí)訓(xùn)環(huán)節(jié),集中進(jìn)行C#數(shù)據(jù)庫應(yīng)用編程的練習(xí),加深學(xué)生對(duì)這兩門課程的理解程度。

    1ADO.NET概述

    ADO.NET是支持?jǐn)?shù)據(jù)庫應(yīng)用程序開發(fā)的數(shù)據(jù)訪問中間件,是.NET平臺(tái)的重要組成部分,它主要用于解決WEB和分布式應(yīng)用程序的問題,是由.NET Framework中的一組類或命名空間組成的[1]。

    .NET Framework數(shù)據(jù)提供程序用于連接到數(shù)據(jù)庫、執(zhí)行命令和檢索結(jié)果,它涵括了以下5個(gè)核心對(duì)象:

    ⑴Connection對(duì)象:建立與特定數(shù)據(jù)源的連接。

    ⑵Command對(duì)象:對(duì)數(shù)據(jù)源執(zhí)行命令。

    ⑶DataReader對(duì)象:從數(shù)據(jù)源中讀取只進(jìn)且只讀的數(shù)據(jù)流。

    ⑷DataAdapter對(duì)象:用數(shù)據(jù)源填充DataSet并解析更新。

    ⑸DataSet對(duì)象:數(shù)據(jù)容器

    在C#數(shù)據(jù)庫應(yīng)用中要使用ADO.NET相關(guān)功能時(shí),只需將System.Data命名空間引入到代碼中,該命名空間下有包含OleDb、ODBC、SqlClient、Common、SqlTypes、Sql、ProviderBase等常用子命名空間,根據(jù)編程的需要引入相應(yīng)的子命名空間到程序中即可。

    2數(shù)據(jù)連接對(duì)象Connection

    Connection對(duì)象代表與數(shù)據(jù)源的唯一會(huì)話,如果是客戶端/服務(wù)器數(shù)據(jù)庫系統(tǒng),該對(duì)象可以等價(jià)于到服務(wù)器的實(shí)際網(wǎng)絡(luò)連接。在不同的數(shù)據(jù)提供者內(nèi)部,Connection對(duì)象的名稱是不同的,在SQL Server DATA Provider中稱為SqlConnection。

    Connection對(duì)象應(yīng)用的一般步驟如下:

    ⑴創(chuàng)建連接字符串

    ⑵創(chuàng)建Connection類型的對(duì)象

    ⑶打開數(shù)據(jù)源的連接

    ⑷執(zhí)行數(shù)據(jù)庫的訪問操作代碼

    ⑸關(guān)閉數(shù)據(jù)源連接

    以下代碼就是對(duì)上述應(yīng)用步驟的體現(xiàn):

    using System.Data.SqlClient;//引入命名空間

    string connStr = "server=.;uid=sa;pwd=sa;database=myDB"; //創(chuàng)建連接字符串

    SqlConnection conn = new SqlConnection(connStr); //創(chuàng)建連接對(duì)象

    ……

    if (conn.State == ConnectionState.Closed)

    { conn.Open(); } //打開數(shù)據(jù)庫連接

    ……//執(zhí)行數(shù)據(jù)庫的訪問操作代碼

    if (conn.State == ConnectionState.Open)

    { conn.Close();} //關(guān)閉數(shù)據(jù)連接

    3執(zhí)行數(shù)據(jù)庫命令對(duì)象Command

    當(dāng)建立與數(shù)據(jù)源的連接后,可以使用Command對(duì)象來執(zhí)行命令并從數(shù)據(jù)源中返回結(jié)果??梢允褂肅ommand構(gòu)造函數(shù)來創(chuàng)建命令,該構(gòu)造函數(shù)采用在數(shù)據(jù)源、Connection對(duì)象和Transaction對(duì)象中執(zhí)行的SQL語句的可選參數(shù)。

    SqlCommand對(duì)象對(duì)于數(shù)據(jù)庫操作的方法中ExecuteReader()方法是比較常見的,通過DataReader類型的對(duì)象,應(yīng)用程序能夠獲得執(zhí)行SQL查詢后的結(jié)果集[2]。示例如下:

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

    SqlDataReader dr = cmd.ExecuteReader();

    //以上代碼出現(xiàn)在創(chuàng)建連接對(duì)象之后,其中的參數(shù)conn就是之前所創(chuàng)建的連接對(duì)象

    以上代碼調(diào)用了SqlCommand的ExecuteReader()方法將查詢的結(jié)果賦給了一個(gè)SqlDataReader對(duì)象dr。而如果要對(duì)數(shù)據(jù)進(jìn)行插入、修改、刪除操作和其他沒有返回結(jié)果集的SQL語句,則選用方法ExecuteNonQuery()進(jìn)行操作。

    4數(shù)據(jù)讀取器對(duì)象DataReader

    使用DataReader對(duì)象能夠從數(shù)據(jù)庫中檢索只讀、只進(jìn)的數(shù)據(jù)流。查詢結(jié)果在查詢執(zhí)行時(shí)返回并存儲(chǔ)在客戶端的網(wǎng)絡(luò)緩沖區(qū),直到DataReader對(duì)象的Read()方法發(fā)出讀取請(qǐng)求。DataReader提供未緩沖的數(shù)據(jù)流,使得數(shù)據(jù)源中返回的結(jié)果得以有效地順序處理,可以提高應(yīng)用程序性能,并且在默認(rèn)情況下一次只在內(nèi)存中存儲(chǔ)一行數(shù)據(jù),以減少系統(tǒng)開銷,因此DataReader對(duì)象在檢索大量數(shù)據(jù)時(shí)應(yīng)用就顯得非常合適和重要。

    示例如下:

    …… //按前述方法創(chuàng)建數(shù)據(jù)庫連接、創(chuàng)建數(shù)據(jù)庫命令并打開數(shù)據(jù)庫連接

    SqlDataReader dr = cmd.ExecuteReader();

    if (dr.Read() == true)//輸出結(jié)果集中的各個(gè)字段

    {Response.Write(dr["ID"].ToString);

    ……}

    …… // 關(guān)閉數(shù)據(jù)庫連接,關(guān)閉DataReader對(duì)象

    代碼中采用了直接根據(jù)字段名“dr[“ID”]”的形式訪問結(jié)果集,也可以通過for循環(huán),利用FieldCount屬性和GetValue()方法,依次訪問數(shù)據(jù)集的字段。

    5數(shù)據(jù)適配器對(duì)象DataAdapter

    DataAdapter用于從數(shù)據(jù)源檢索數(shù)據(jù)并填充DataSet中的表,還可將DataSet的更改解析回?cái)?shù)據(jù)源。DataAdapter使用Connection對(duì)象連接到數(shù)據(jù)源,并使用Command對(duì)象從數(shù)據(jù)源檢索數(shù)據(jù)以及將更改解析回?cái)?shù)據(jù)源。

    以下示例反映了使用DataAdapter填充DataSet對(duì)象的步驟:

    string connStr = "server=.;uid=sa;pwd=sa;database=myDB"; //數(shù)據(jù)庫連接串

    string sqlStr = "select * from myTable"; //檢索語句串

    SqlDataAdapter da = new SqlDataAdapter(sqlStr, connStr); //創(chuàng)建DataAdapter

    DataSet ds = new DataSet();//創(chuàng)建DataSet

    da.Fill(ds, "myTable"); //填充DataSet對(duì)象

    6數(shù)據(jù)集對(duì)象DataSet

    DataSet是ADO.NET最核心的成員之一,也是各種基于.NET平臺(tái)開發(fā)數(shù)據(jù)庫應(yīng)用最常接觸的類。它在實(shí)現(xiàn)數(shù)據(jù)庫抽取數(shù)據(jù)過程中起關(guān)鍵作用,是從數(shù)據(jù)庫完成數(shù)據(jù)抽取后的數(shù)據(jù)存放地,是數(shù)據(jù)源數(shù)據(jù)在內(nèi)存中映射成的緩存。在完成數(shù)據(jù)連接和通過數(shù)據(jù)適配器填充DataSet對(duì)象之后,客戶端再通過DataSet來獲得所需數(shù)據(jù),反之更新數(shù)據(jù)也一樣,因此DataSet是在客戶端實(shí)現(xiàn)讀取、更新數(shù)據(jù)庫等過程的中間部件。

    以下代碼是DataSet使用范例:

    …… //創(chuàng)建DataAdapter、創(chuàng)建DataSet并填充的代碼同前,省略

    //給DataSet創(chuàng)建副本,操作對(duì)副本進(jìn)行,以免因誤操作損壞數(shù)據(jù)

    DataSet dsCopy = ds.Copy();

    DataTable dt = ds.Table("myTable");

    …… //對(duì)DataTable中的DataRow和DataColumn對(duì)象進(jìn)行操作

    da.Update(ds, "myTable"); //最后將更新提交到數(shù)據(jù)庫中

    7結(jié)語

    前文介紹了ADO.NET中主要的數(shù)據(jù)庫訪問和操作對(duì)象,講述了各對(duì)象的作用和使用方式。其中Connection對(duì)象主要負(fù)責(zé)連接數(shù)據(jù)庫,Command對(duì)象主要負(fù)責(zé)生成并執(zhí)行SQL語句,DataReader對(duì)象主要負(fù)責(zé)讀取數(shù)據(jù)庫中的數(shù)據(jù),DataAdapter對(duì)象主要負(fù)責(zé)在Command對(duì)象執(zhí)行完SQL語句后生成并填充DataSet和DataTable,而DataSet對(duì)象主要負(fù)責(zé)存取和更新數(shù)據(jù)。

    在每一小節(jié)中也給出了C#中數(shù)據(jù)庫編程一般步驟和所使用的源代碼,通過這種集中實(shí)訓(xùn)課程的學(xué)習(xí)環(huán)節(jié),學(xué)生既能進(jìn)一步熟悉C#編程語言,也能將數(shù)據(jù)庫課程中的SQL語句融入到C#語句當(dāng)中,使兩門課程不再相互割裂,而是成為一個(gè)應(yīng)用程序開發(fā)中不可或缺的兩個(gè)有機(jī)組成部分。

    [參考文獻(xiàn)]

    [1]陳建偉,張波.Visual C#2010程序設(shè)計(jì)教程[M].北京:清華大學(xué)出版社,2012:229.

    [2]夏德宏.ADO.NET數(shù)據(jù)庫技術(shù)應(yīng)用淺析[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2014年第05期:100-101.

    猜你喜歡
    數(shù)據(jù)源語句代碼
    重點(diǎn):語句銜接
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
    精彩語句
    基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評(píng)價(jià)研究
    基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評(píng)價(jià)算法
    如何搞定語句銜接題
    老河口市| 武鸣县| 平昌县| 军事| 隆子县| 梅河口市| 新余市| 益阳市| 阜新市| 睢宁县| 塔河县| 淄博市| 淮阳县| 拉萨市| 剑河县| 罗平县| 临桂县| 呈贡县| 陇川县| 鹤岗市| 阳信县| 盐津县| 宿松县| 伊宁市| 武山县| 迁西县| 巴林右旗| 嫩江县| 洪雅县| 镇赉县| 梁平县| 广昌县| 双鸭山市| 庆云县| 黔西县| 乌海市| 潢川县| 蛟河市| 贡嘎县| 平罗县| 池州市|