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

        ?

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

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

        柴君

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

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

        1ADO.NET概述

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

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

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

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

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

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

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

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

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

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

        Connection對象應用的一般步驟如下:

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

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

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

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

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

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

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

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

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

        ……

        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ù)庫命令對象Command

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

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

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

        SqlDataReader dr = cmd.ExecuteReader();

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

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

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

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

        示例如下:

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

        SqlDataReader dr = cmd.ExecuteReader();

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

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

        ……}

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

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

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

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

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

        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對象

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

        DataSet是ADO.NET最核心的成員之一,也是各種基于.NET平臺開發(fā)數(shù)據(jù)庫應用最常接觸的類。它在實現(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對象之后,客戶端再通過DataSet來獲得所需數(shù)據(jù),反之更新數(shù)據(jù)也一樣,因此DataSet是在客戶端實現(xiàn)讀取、更新數(shù)據(jù)庫等過程的中間部件。

        以下代碼是DataSet使用范例:

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

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

        DataSet dsCopy = ds.Copy();

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

        …… //對DataTable中的DataRow和DataColumn對象進行操作

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

        7結(jié)語

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

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

        [參考文獻]

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

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

        猜你喜歡
        數(shù)據(jù)源語句代碼
        重點:語句銜接
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
        精彩語句
        基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評價研究
        基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評價算法
        如何搞定語句銜接題
        語文知識(2014年4期)2014-02-28 21:59:52
        国产色秀视频在线播放| 琪琪色原网站在线观看| 国产成人一区二区三区| 激情内射亚洲一区二区三区爱妻| 日韩国产有码在线观看视频| 少妇高潮精品正在线播放| 久青草影院在线观看国产| 蜜桃麻豆www久久囤产精品| 国产精品乱一区二区三区| 日韩在线精品视频免费| 看女人毛茸茸下面视频 | 成人免费777777被爆出| 激情五月婷婷综合| 午夜dj在线观看免费视频| 亚洲an日韩专区在线| 精品国产污黄网站在线观看| 插插射啊爱视频日a级| 亚洲国产欧美在线观看| 国产亚洲av手机在线观看 | 国产美女主播福利一区| 国产亚洲精品97在线视频一| 成年无码av片在线| 天天躁日日躁狠狠躁一区| 亚洲女同人妻在线播放| 亚洲人成网站18禁止| 成人一区二区免费视频| 91免费国产| 亚洲av老熟女一区二区三区| 亚洲熟妇久久国产精品| 国产在线不卡AV观看| 91久久国产露脸国语对白| 人成午夜大片免费视频77777| 精品福利视频一区二区三区| 久久久久亚洲AV无码专区一区| av在线免费观看大全| 免费观看又色又爽又湿的视频| 亚洲中文字幕无码二区在线| 在线女同免费观看网站| 疯狂做受xxxx国产| 久久综合第一页无码| 日韩国产自拍成人在线|