下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精品文檔C#下數(shù)據(jù)庫編程一前言: 曾幾何時,OO語言大家族中又多了一位新成員,他有個堅強、銳利而又不失好聽的名字,C#讀做C Sharp。C#由Microsoft一手打造,更重要的是其總設計師就是Turbo Pascal、Delphi的締造者、天才的Anders。記得在一次C#的演示會上,Anders和Microsoft的主管人員曾立下壯志,要讓C#取代VC+,成為今后.NET開發(fā)的首選語言。但后來的許多負面的議論也不免讓人對這個C#表示疑心,有人說C#就是JAVA的翻版,幾乎沒有什么自己的特點,還有人說C#效率低下,而且和VB.NET有很大類同,根本就沒有意義推出,不久就會下臺并最終死亡,等
2、等。我們也不禁疑心起來,C#真的這么命短?真的會與JAVA沒有什么大的交鋒就英年早逝?兩年多過去了,這種議論大局部已經(jīng)隨著事實不攻自破。C#不但沒有死亡,而且有著超乎尋常的生命力,正在用他鋒利的語言利劍,讓世人真正領教了什么叫做系知名門、天生立志。在.NET平臺開發(fā)上,C#已經(jīng)成為無可爭議的首選語言,更令人吃驚的是,這個人稱與JAVA雷同的"仿制品"語言卻不知道為什么,一步步在蠶食JAVA的地盤,令JAVA的締造者已經(jīng)開始感到不安,更讓JAVA的使用者或多或少有些動搖。大約1年前,我接觸到了C#,并且試著以我一貫審視IT界開展的眼光去審視他。通過一些日子的學習與體會,我確實
3、感覺這個語言的不平凡性,特別是他充分利用了.NET的優(yōu)勢和特點,并有VS.NET的完美集成于.NET開發(fā)平臺中。在我常年開發(fā)的數(shù)據(jù)庫領域,我試著用C#結合ADO.NET開發(fā)了一些工程?,F(xiàn)借這個時機,和讀者們一起分享C#開發(fā)數(shù)據(jù)庫的快樂。正文: 如果你以前用過Visual Foxpro開發(fā)數(shù)據(jù)庫工程,你就會有這種體會,VFP對數(shù)據(jù)庫的操作,還是一種對數(shù)據(jù)庫文件的操作,比方: OPEN DATABASE MyDatabase &&翻開數(shù)據(jù)庫MyDatabaseUSE MyTable &&翻開數(shù)據(jù)庫中的MyTable表GO 5 &&將Cursor跳到第
4、5條記錄REPLACE MyName WITH "楊揚" &&用"楊揚"替換第5條記錄上的MyName字段GO BOTTOM &&將Cursor跳到最后一條記錄LOCATE FOR MyName="楊揚" &&查找并定位IF FOUND()? "FOUND!"ELSE? "NOT FOUND!"ENDIFUSE &&關閉MyTableCLOSE DATABASE MyDatabase &&關閉數(shù)據(jù)庫MyDatabas
5、e這段小程序可以說是VFP中比擬簡單的一段小程序了,但非常有代表性。從這段程序我們可以感覺到,在VFP想操縱一個數(shù)據(jù)庫中的一個表需要許多類似文件的操作,比方:翻開數(shù)據(jù)庫、翻開表、跳轉Cursor、讀取字段內容、查找字段內容、關閉表、關閉數(shù)據(jù)庫等等。這些操作雖然直觀易懂,但十分不方便使用,而且如果同時有多個表翻開,經(jīng)常會出現(xiàn)表的輪換訪問的問題,就需要不斷的切換表的工作區(qū),十分的麻煩和容易出錯。最關鍵的是,這種操作方法不符合OO思想的精華-封裝。 如果您熟悉OO編程思想,或者曾經(jīng)有OO設計經(jīng)驗,您可能會和我一樣這樣想,如果一個數(shù)據(jù)庫就是一個對象,所有的操作、信息都通過方法Method、屬性Attr
6、ibure、事件Event提供出來,供開發(fā)者使用,那該多好啊。C#正是借助基于這種思想設計的數(shù)據(jù)庫訪問技術ADO.NET,并提供了一系列方便實用的類。應用這些數(shù)據(jù)庫訪問的類,您就可以輕松、準確而且是面向對象的操縱數(shù)據(jù)庫中的各種數(shù)據(jù)了。如圖,這就是C#中提供的數(shù)據(jù)庫訪問ADO.NET的結構圖。從這張圖中,我們可以清楚的了解到ADO.NET的數(shù)據(jù)訪問技術的架構。ADO.NET支持SQL Server數(shù)據(jù)訪問和OLE DB數(shù)據(jù)訪問。兩者相比,前者是針對SQL Server的數(shù)據(jù)庫訪問引擎,所以訪問SQL Server數(shù)據(jù)庫效率會高許多,但只支持SQL Server。后者是比擬通用的數(shù)據(jù)庫訪問引擎,可
7、以支持廣泛的數(shù)據(jù)庫,但效率不如前者。對開發(fā)者來說,如果不用到某種數(shù)據(jù)庫的特性,其大體使用方法是一致的。上述內容指數(shù)據(jù)庫的連接局部,也就是上圖中的Connetion對象。Connection對象提供了與具體數(shù)據(jù)庫的連接方式,具體你是用SqlConnection對象還是OleDbConnection對象,這個根據(jù)你的數(shù)據(jù)庫類型由你選擇而定,下面的表達中,為了不占用過多的篇幅,在無特殊內容的地方,不再分開表達。 下面給出兩段典型的數(shù)據(jù)庫連接的例子。在此之前,請在程序頭部using處添加using System.Data.SqlClient或System.Data.OleDb,以保證數(shù)據(jù)庫訪問時用到的
8、命名空間能引用SQL Server數(shù)據(jù)訪問string strConn="Integrated Security=SSPI;Initial Catalog=MyDatabase;Data Source=YY-POWERPC "SqlConnection myConnection = new SqlConnection (strConn);myConnection.Open();OleDb數(shù)據(jù)訪問String strConn="Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=MyDatabase;Int
9、egrated Security=SSPI"OleDbConnection myConnection=new OleDbConnection (strConn);myConnection.Open();上述步驟執(zhí)行后,如果沒有異常拋出,便可成功完成與數(shù)據(jù)庫的連接。在完成了與數(shù)據(jù)庫的連接后,接下來就是建立一個DataAdapter對象,來完成可訪問數(shù)據(jù)庫的工作。DataAdapter的工作是后面DataSet的根底,其內容就是建立一個DataSet與數(shù)據(jù)庫的中間層,來協(xié)調訪問。由于DataAdapter與DataSet的關系十分緊密,我就結合在一起介紹了。DataAdapter也分為S
10、qlDataAdapter和OleDbDataAdatper兩種。下面給出一段典型代碼OleDbDataAdapter的情況可類推:SqlDataAdapter myDataAdapter = new SqlDataAdapter ();DataSet myDataSet = new DataSet ();string strCom = "SELECT * FROM 會員信息表"myDataAdapter.SelectCommand = new SqlCommand (strCom,myConnection);SqlCommandBuilder myCB = new Sql
11、CommandBuilder (myDataAdapter);myDataAdapter.Fill (myDataSet,"會員信息表");這段代碼用到了SqlDataAdapter、DataSet、SqlCommand、SqlCommandBuilder四個對象。從上圖中可以看出,SqlDataAdapter的作用就是負責與數(shù)據(jù)庫的通訊訪問,同時與DataSet相連,它的內部有四個很重要的Command對象同樣分為SqlCommand和OleDbCommand,都是訪問數(shù)據(jù)庫必用的,分別為SelectCommand、InsertCommand、UpdateCommand、
12、DeleteCommand對象。這些Command對象便是專門用來完成對數(shù)據(jù)庫的查詢、插入、更新、刪除操作,它們就像四個大臣,在DataAdapter的控制下分別主管各自的事情。其中SelectCommand是它們四個中的老大,由它可以自動的構造生成另外的三個。構造生成的過程就是應用CommandBuilder。在這之前,我們只需要指定DataAdapter中的SelectCommand對象,就可以了。在設置好了SQL Select語句后,就可以開始填充相應的數(shù)據(jù)集了。方法是應用DataAdapter的Fill方法,參數(shù)為DataSet及其中的某個DataTable。這里要著重講一講DataS
13、et對象。如果你用過ADO中的Recordset對象,你可能會感覺到DataSet和Recordset的差異。Recordset一般只能應用于單表,即一個Recordset對應于一張表。而DataSet中有一個DataTableCollection,即一個DataTable集合,可以包含多個DataTable對象。DataTable對象看上去就更加像一張表了,其中有DataRowCollection、DataColumnCollection、ConstraintCollection。它們分別代表DataRow數(shù)據(jù)行、DataColumn數(shù)據(jù)列、Constraint約束關系的對象集合??赡苷f這么多,你已經(jīng)有點兒迷糊了,先看一句代碼吧。myDataSet.Tables"MyTable".Rows3"MyName" = "楊揚"怎么樣?是不是一下子就明白了許多。這是一句多么完美的OO思想表達出的語句啊!這句就是將DataSet下的一個名為MyTable的"虛表"中的第4行的MyName字段的內容改為"楊揚"。為什么叫"虛表"呢?這是因為ADO.NET的一個特點就是脫機連接數(shù)據(jù)庫。這樣可以減少網(wǎng)絡通訊的壓力,提高效率。你可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度第二章國際貨物買賣合同標的檢驗與認證3篇
- 二零二五年度雕塑項目投標采購合同范本3篇
- 2025年度旅游景區(qū)導游旅游紀念品銷售合作合同4篇
- 二零二五版駕校教練員績效考核及激勵合同3篇
- 2025年度餐廳總經(jīng)理數(shù)字化運營管理合同3篇
- 二零二五年度深部礦產(chǎn)資源勘查開采權轉讓合同2篇
- 二零二四事業(yè)單位借調人員臨時工作期間勞動合同解除流程3篇
- 2024-2025學年高中政治第一單元文化與生活第一課第一框體味文化訓練含解析新人教版必修3
- 二零二五版能源效率認證EMC合同能源管理合作協(xié)議3篇
- 二零二四年度專業(yè)演出服務合同-舞臺劇制作合作協(xié)議3篇
- 帶狀皰疹護理查房課件整理
- 年月江西省南昌市某綜合樓工程造價指標及
- 奧氏體型不銹鋼-敏化處理
- 作物栽培學課件棉花
- 交通信號控制系統(tǒng)檢驗批質量驗收記錄表
- 弱電施工驗收表模板
- 絕對成交課件
- 探究基坑PC工法組合鋼管樁關鍵施工技術
- 國名、語言、人民、首都英文-及各地區(qū)國家英文名
- API SPEC 5DP-2020鉆桿規(guī)范
- 組合式塔吊基礎施工專項方案(117頁)
評論
0/150
提交評論