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í)之”的課程值得贊賞
主站蜘蛛池模板: 2019年国产精品自拍不卡| 久久国语对白| 欧美一区二区三区不卡免费| 免费看美女自慰的网站| 91破解版在线亚洲| 欧美精品在线视频观看| 一级做a爰片久久免费| 日韩乱码免费一区二区三区| 亚洲a级毛片| 中文字幕在线永久在线视频2020| 久久性视频| 亚洲一区免费看| 国产经典在线观看一区| 中国一级特黄大片在线观看| 国产精品久久久精品三级| 91在线精品麻豆欧美在线| 亚洲国产午夜精华无码福利| 欧美精品另类| 欧美中出一区二区| 强奷白丝美女在线观看| 91无码网站| 国产主播在线观看| 波多野衣结在线精品二区| 国产成人你懂的在线观看| 欧美在线天堂| 亚洲精品无码久久毛片波多野吉| AV不卡在线永久免费观看| 免费在线视频a| 欧美性色综合网| 亚洲综合专区| 波多野结衣中文字幕一区二区| 国产老女人精品免费视频| 国产精品七七在线播放| 亚洲天堂日本| 九九九精品成人免费视频7| 国产在线观看成人91| 极品尤物av美乳在线观看| 亚洲日本一本dvd高清| 久久这里只有精品2| 久久一本精品久久久ー99| 色天天综合| 超清人妻系列无码专区| 精品少妇人妻av无码久久| 国产免费高清无需播放器| 国产精品无码影视久久久久久久| 高清视频一区| 黄色片中文字幕| 国产毛片高清一级国语| 日本三区视频| 国产第一色| 不卡国产视频第一页| 亚洲人成色在线观看| 国产剧情国内精品原创| 国产一二三区在线| 亚洲国产欧美目韩成人综合| 国产女人在线| a欧美在线| 91免费国产高清观看| 欧美激情首页| 久久这里只有精品国产99| 国产资源免费观看| 婷婷伊人久久| 亚洲综合色婷婷中文字幕| 欧美精品二区| 人妻丰满熟妇αv无码| 久一在线视频| 精品福利一区二区免费视频| 亚洲最猛黑人xxxx黑人猛交 | 久久久久亚洲AV成人人电影软件| www.亚洲一区二区三区| 国产本道久久一区二区三区| 伊人激情综合网| 日韩福利视频导航| 久久久亚洲色| 成人在线天堂| 国产午夜一级淫片| 国产天天射| 玖玖免费视频在线观看| 中国国产A一级毛片| 亚洲国产成人自拍| 亚洲va精品中文字幕| 尤物成AV人片在线观看|