999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

柴君

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

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

1ADO.NET概述

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

以下代碼就是對上述應(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)建連接對象

……

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

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

SqlCommand對象對于數(shù)據(jù)庫操作的方法中ExecuteReader()方法是比較常見的,通過DataReader類型的對象,應(yīng)用程序能夠獲得執(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ù)進(jìn)行插入、修改、刪除操作和其他沒有返回結(jié)果集的SQL語句,則選用方法ExecuteNonQuery()進(jìn)行操作。

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

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

示例如下:

…… //按前述方法創(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ù)庫應(yīng)用最常接觸的類。它在實現(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)建副本,操作對副本進(jìn)行,以免因誤操作損壞數(shù)據(jù)

DataSet dsCopy = ds.Copy();

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

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

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

7結(jié)語

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

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

[參考文獻(xiàn)]

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

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

猜你喜歡
數(shù)據(jù)庫課程
《無機(jī)化學(xué)》課程教學(xué)改革
云南化工(2021年6期)2021-12-21 07:31:42
數(shù)字圖像處理課程混合式教學(xué)改革與探索
軟件設(shè)計與開發(fā)實踐課程探索與實踐
為什么要學(xué)習(xí)HAA課程?
數(shù)據(jù)庫
財經(jīng)(2017年15期)2017-07-03 22:40:49
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
“學(xué)而時習(xí)之”的課程值得贊賞
主站蜘蛛池模板: 久久这里只有精品免费| 精品黑人一区二区三区| 人妻丰满熟妇AV无码区| 免费无码又爽又刺激高| 热思思久久免费视频| 日韩精品一区二区三区swag| 精品国产亚洲人成在线| 国产精品乱偷免费视频| 国产精品丝袜在线| 无码精品国产dvd在线观看9久 | 91久久偷偷做嫩草影院精品| 国产成人精品一区二区不卡| 天堂网国产| 国产特级毛片aaaaaa| 又粗又大又爽又紧免费视频| 伊人久久综在合线亚洲2019| 九九热精品视频在线| 亚洲熟妇AV日韩熟妇在线| 91年精品国产福利线观看久久 | 国产91蝌蚪窝| 国产亚洲视频中文字幕视频 | 亚洲精品第五页| 五月六月伊人狠狠丁香网| 美女视频黄又黄又免费高清| 无码精品国产VA在线观看DVD| 国产精品午夜电影| 四虎影视库国产精品一区| 国产男女XX00免费观看| 99re在线观看视频| 中文字幕免费视频| 久久综合结合久久狠狠狠97色| 亚洲伦理一区二区| AV片亚洲国产男人的天堂| 国产精品漂亮美女在线观看| 一级毛片免费不卡在线 | 沈阳少妇高潮在线| 日本免费a视频| 欧美a在线| 亚洲一区二区视频在线观看| 成人免费午夜视频| 精品一区二区三区视频免费观看| 国产精品一线天| 内射人妻无套中出无码| 欧美亚洲一区二区三区导航| 亚洲国产精品无码AV| 97se亚洲综合在线韩国专区福利| 亚洲欧美一级一级a| 亚洲欧美在线看片AI| 四虎成人在线视频| 精品一区二区久久久久网站| 亚洲av成人无码网站在线观看| 91在线播放免费不卡无毒| 精品无码国产自产野外拍在线| 制服丝袜 91视频| a在线观看免费| 国内精品自在自线视频香蕉| 波多野结衣在线一区二区| 亚洲精品成人福利在线电影| 九九免费观看全部免费视频| 国产在线麻豆波多野结衣| 国产成人精品视频一区视频二区| 波多野结衣二区| www.国产福利| 不卡无码h在线观看| 国产三级成人| 精品国产成人三级在线观看| 国产正在播放| 伊人色综合久久天天| 亚洲欧美另类中文字幕| 欧美黑人欧美精品刺激| 久久精品中文字幕少妇| 国产成在线观看免费视频| 青草视频在线观看国产| 亚洲浓毛av| 久久综合亚洲色一区二区三区| 77777亚洲午夜久久多人| 国产性生大片免费观看性欧美| 91毛片网| 天堂岛国av无码免费无禁网站| 黄色网在线| www精品久久| 亚洲欧美自拍中文|