• 
    

    
    

      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à)算法
      如何搞定語句銜接題
      旬邑县| 绥中县| 瓦房店市| 新化县| 江北区| 建宁县| 原平市| 开封市| 肃宁县| 宁强县| 杂多县| 台州市| 定远县| 黄冈市| 务川| 伊金霍洛旗| 尼玛县| 安多县| 来凤县| 曲阳县| 江西省| 资中县| 霍林郭勒市| 新平| 资中县| 瓦房店市| 盈江县| 仪陇县| 肇州县| 临沭县| 馆陶县| 睢宁县| 大同县| 鹤壁市| 布拖县| 岳西县| 天津市| 手游| 囊谦县| 都昌县| 平邑县|