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í)之”的課程值得贊賞
主站蜘蛛池模板: 日本91视频| 免费看的一级毛片| 国产激爽大片高清在线观看| 色婷婷电影网| 亚洲天堂视频在线播放| 夜夜拍夜夜爽| 国产综合另类小说色区色噜噜| 午夜综合网| 91在线日韩在线播放| 国产一区二区丝袜高跟鞋| 精品福利一区二区免费视频| 色综合狠狠操| 色偷偷男人的天堂亚洲av| 欧美区一区| 日韩午夜福利在线观看| 国产精品浪潮Av| 97精品伊人久久大香线蕉| 免费av一区二区三区在线| 久久窝窝国产精品午夜看片| 久草青青在线视频| 凹凸精品免费精品视频| 伊人欧美在线| 日韩视频福利| 国产美女在线观看| 免费看一级毛片波多结衣| 五月激激激综合网色播免费| 刘亦菲一区二区在线观看| 中文无码精品A∨在线观看不卡 | 永久天堂网Av| 欧美一区二区自偷自拍视频| 欧美性色综合网| 中国黄色一级视频| 欧美日韩中文字幕在线| 国产丝袜91| 99无码熟妇丰满人妻啪啪 | 国产欧美视频综合二区 | 日韩在线第三页| 久久一日本道色综合久久| 亚洲综合亚洲国产尤物| 18黑白丝水手服自慰喷水网站| 人妖无码第一页| 久久国语对白| 欧美精品aⅴ在线视频| 91国内在线观看| 香蕉综合在线视频91| 国产在线拍偷自揄观看视频网站| 亚洲美女视频一区| 久久综合丝袜日本网| 久久综合色88| 国产香蕉在线| 国产综合无码一区二区色蜜蜜| 欧美啪啪一区| 国产交换配偶在线视频| 亚洲品质国产精品无码| 亚洲伦理一区二区| 国产正在播放| 久久99国产综合精品1| 欧美在线国产| 欧美三級片黃色三級片黃色1| 免费观看成人久久网免费观看| 欧美亚洲欧美区| 手机精品视频在线观看免费| 成人免费视频一区| 久久免费精品琪琪| 五月婷婷亚洲综合| 国产在线视频二区| 真实国产精品vr专区| 无码AV动漫| 又粗又硬又大又爽免费视频播放| 久久99热这里只有精品免费看| 亚洲精品福利视频| 久久黄色毛片| 国产麻豆永久视频| 日韩中文无码av超清| 91免费国产高清观看| 国产精品综合久久久 | 午夜色综合| 秋霞一区二区三区| 天堂网亚洲系列亚洲系列| 欧美日韩成人在线观看| 中文字幕亚洲第一| 91探花在线观看国产最新|