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í)之”的課程值得贊賞
主站蜘蛛池模板: 九九热精品视频在线| 在线播放国产99re| 国产在线一二三区| 欧美黄网在线| a级免费视频| 99久久人妻精品免费二区| 被公侵犯人妻少妇一区二区三区| 中文字幕啪啪| 99福利视频导航| 黄色片中文字幕| 国产乱子伦无码精品小说 | 91精品伊人久久大香线蕉| 亚洲AV无码不卡无码| 欧美成人A视频| 超碰aⅴ人人做人人爽欧美| 国产成人艳妇AA视频在线| 欧美精品啪啪| 人禽伦免费交视频网页播放| 51国产偷自视频区视频手机观看| 国产一线在线| 欧美日韩一区二区在线播放| 2048国产精品原创综合在线| 亚洲综合色婷婷中文字幕| a色毛片免费视频| 99久久精彩视频| 国产乱码精品一区二区三区中文| 日韩最新中文字幕| 国产精品手机视频一区二区| 国产精品短篇二区| 国产亚洲欧美日韩在线一区| 91精品国产无线乱码在线| 亚洲一级色| 午夜精品福利影院| 蜜桃视频一区二区三区| 色婷婷狠狠干| 五月婷婷丁香综合| 欧美亚洲日韩中文| 国产成人精品高清在线| 波多野结衣的av一区二区三区| 91探花国产综合在线精品| 日本不卡免费高清视频| 97视频在线精品国自产拍| 欧美不卡视频在线观看| 亚洲AV无码一二区三区在线播放| 亚洲欧美日本国产综合在线| 秋霞国产在线| 国产成人精品2021欧美日韩| 亚洲精品无码av中文字幕| 91亚洲精选| 福利在线不卡| 精品久久高清| 亚洲三级色| 亚洲精品少妇熟女| 国产精品jizz在线观看软件| 国产xxxxx免费视频| 欧美在线导航| 亚洲第一极品精品无码| 国产成人久久综合777777麻豆 | 亚洲三级a| 在线国产毛片| 国产激爽大片在线播放| 天天爽免费视频| 久草视频一区| 凹凸国产分类在线观看| 69视频国产| 区国产精品搜索视频| 中文字幕亚洲另类天堂| 亚洲中文字幕日产无码2021| 日本免费a视频| 国产欧美视频综合二区| 日韩免费毛片| 亚洲系列无码专区偷窥无码| 国产高潮流白浆视频| 久久天天躁狠狠躁夜夜躁| 手机精品视频在线观看免费| 日韩人妻无码制服丝袜视频| 黄色污网站在线观看| 天堂成人在线| 中文字幕自拍偷拍| 日韩无码视频专区| 精品久久久久无码| 亚洲国产中文在线二区三区免|