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í)之”的課程值得贊賞
主站蜘蛛池模板: 美女视频黄频a免费高清不卡| 不卡午夜视频| 中国国产高清免费AV片| 波多野结衣一区二区三区四区| 亚洲性日韩精品一区二区| 久久亚洲国产最新网站| 40岁成熟女人牲交片免费| 亚洲h视频在线| 久久亚洲中文字幕精品一区| 亚洲成a∧人片在线观看无码| 日韩精品无码免费专网站| 欧美国产日本高清不卡| 四虎永久免费在线| 国产精品视屏| 亚洲三级视频在线观看| 国产成人福利在线视老湿机| 91久久夜色精品国产网站| 99人体免费视频| 波多野结衣一二三| 九九热免费在线视频| 精品国产污污免费网站| 免费看a毛片| 亚洲成a人片在线观看88| 国产欧美精品一区aⅴ影院| 国产屁屁影院| 亚洲成肉网| 色婷婷国产精品视频| 色婷婷色丁香| 黄色国产在线| 亚洲毛片网站| 风韵丰满熟妇啪啪区老熟熟女| 在线精品欧美日韩| 亚洲综合一区国产精品| 色窝窝免费一区二区三区| 91色在线观看| 日韩精品欧美国产在线| 青青草国产在线视频| 中文精品久久久久国产网址| 熟妇丰满人妻| 伊人丁香五月天久久综合| 婷婷色狠狠干| 波多野结衣一区二区三区四区| 国产一在线观看| 99久久精品免费观看国产| 亚洲无码日韩一区| 在线观看av永久| 国产人免费人成免费视频| 国产乱码精品一区二区三区中文| 中文字幕首页系列人妻| 国产XXXX做受性欧美88| 久久伊人久久亚洲综合| 国产成人综合日韩精品无码首页| 福利在线一区| 精品视频一区二区观看| 国产在线观看精品| 国产精品自拍合集| 国模极品一区二区三区| 尤物视频一区| 中文字幕亚洲精品2页| 99久久精品国产麻豆婷婷| 国产精品永久在线| 久久黄色影院| 亚洲,国产,日韩,综合一区| 国产视频入口| 精品国产一区二区三区在线观看| 中文字幕av一区二区三区欲色| 18黑白丝水手服自慰喷水网站| 少妇精品在线| 亚洲黄色成人| 香蕉视频在线观看www| 欧美中文字幕无线码视频| 精品一區二區久久久久久久網站| 欧美亚洲网| 亚洲视频免费在线| 亚洲三级色| 成人字幕网视频在线观看| 亚洲欧美另类久久久精品播放的| 一级毛片免费高清视频| 久久精品娱乐亚洲领先| 亚洲午夜片| 精品国产Av电影无码久久久| 极品国产一区二区三区|