国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

詳解C#下數據庫編程

開發 后端
本文將介紹C#下數據庫編程,筆者試著用C#結合ADO.NET研發了一些項目。現借這個機會,和讀者們一起分享C#研發數據庫的快樂。

C#下數據庫編程前言:

曾幾何時,OO語言大家族中又多了一位新成員,他有個堅強、銳利而又不失好聽的名字,C#(讀做C Sharp)。C#由Microsoft一手打造,更重要的是其總設計師就是Turbo Pascal、Delphi的締造者、天才的Anders。記得在一次C#的演示會上,Anders和Microsoft的主管人員曾立下壯志,要讓C#取代VC++,成為今后.NET研發的最佳選擇語言。但后來的許多負面的議論也不免讓人對這個C#表示懷疑,有人說C#就是Java的翻版,幾乎沒有什么自己的特點,更有人說C#效率低下,而且和VB.NET有非常大類同,根本就沒有意義推出,不久就會下臺并最終死亡,等等。我們也不禁懷疑起來,C#真的這么命短?真的會和Java沒有什么大的交鋒就英年早逝?

兩年多過去了,這種議論大部分已隨著事實不攻自破。C#不僅沒有死亡,而且有著超乎尋常的生命力,正在用他鋒利的語言利劍,讓世人真正領教了什么叫做系出名門、天生立志。在.NET平臺研發上,C#已成為無可爭議的最佳選擇語言,更令人吃驚的是,這個人稱和Java雷同的"仿制品"語言卻不知道為什么,一步步在蠶食Java的地盤,令Java的締造者已開始感到不安,更讓Java的使用者或多或少有些動搖。

大約1年前,我接觸到了C#,并且試著以我一貫審視IT界發展的眼光去審視他。通過一些日子的學習和體會,我確實感覺這個語言的不平凡性,特別是他充分利用了.NET的優勢和特點,并有VS.NET的完美集成于.NET研發平臺中。在我長年研發的數據庫領域,我試著用C#結合ADO.NET研發了一些項目。現借這個機會,和讀者們一起分享C#研發數據庫的快樂。

C#下數據庫編程正文:

如果你以前用過Visual Foxpro研發數據庫項目,你就會有這種體會,VFP對數據庫的操作,還是一種對數據庫文件的操作,比如:

  1. OPEN DATABASE MyDatabase &&打開數據庫MyDatabase  
  2. USE MyTable &&打開數據庫中的MyTable表  
  3. GO 5 &&將Cursor跳到第5條記錄  
  4. REPLACE MyName WITH "楊揚" &&用"楊揚"替換第5條記錄上的MyName字段  
  5. GO BOTTOM &&將Cursor跳到最后一條記錄  
  6. LOCATE FOR MyName=="楊揚" &&查找并定位  
  7. IF FOUND()  
  8. "FOUND!" 
  9. ELSE 
  10. "NOT FOUND!" 
  11. ENDIF  
  12. USE &&關閉MyTable  
  13. CLOSE DATABASE MyDatabase &&關閉數據庫MyDatabase 

這段小程式能說是VFP中比較簡單的一段小程式了,但非常有代表性。從這段程式我們能感覺到,在VFP想操縱一個數據庫中的一個表需要許多類似文件的操作,比如:打開數據庫、打開表、跳轉Cursor、讀取字段內容、查找字段內容、關閉表、關閉數據庫等等。這些操作雖然直觀易懂,但十分不方便使用,而且如果同時有多個表打開,經常會出現表的輪換訪問的問題,就需要不斷的轉換表的工作區,十分的麻煩和容易出錯。最關鍵的是,這種操作方法不符合OO思想的精華--封裝。

如果你熟悉OO編程思想,或原來有OO設計經驗,你可能會和我相同這樣想,如果一個數據庫就是個對象,所有的操作、信息都通過方法(Method)、屬性(Attribure)、事件(Event)提供出來,供研發者使用,那該多好啊。C#正是借助基于這種思想設計的數據庫訪問技術ADO.NET,并提供了一系列方便實用的類。應用這些數據庫訪問的類,你就能輕松、準確而且是面向對象的操縱數據庫中的各種數據了。

如圖,這就是C#中提供的數據庫訪問ADO.NET的結構圖。 

C#中提供的數據庫訪問ADO.NET的結構圖

從這張圖中,我們能清晰的了解到ADO.NET的數據訪問技術的架構。ADO.NET支持SQL Server數據訪問和OLE DB數據訪問。兩者相比,前者是針對SQL Server的數據庫訪問引擎,所以訪問SQL Server數據庫效率會高許多,但只支持SQL Server。后者是比較通用的數據庫訪問引擎,能支持廣泛的數據庫,但效率不如前者。對研發者來說,如果不用到某種數據庫的特性,其大體使用方法是一致的。

上述內容指數據庫的連接部分,也就是上圖中的Connetion對象。Connection對象提供了和具體數據庫的連接方式,具體你是用SqlConnection對象還是OleDbConnection對象,這個根據你的數據庫類型由你選擇而定,下面的敘述中,為了不占用過多的篇幅,在無特別內容的地方,不再分開敘述。

下面給出兩段典型的數據庫連接的例子。在此之前,請在程式頭部using處添加using System.Data.SqlClient或System.Data.OleDb,以確保數據庫訪問時用到的命名空間能引用 

  1. SQL Server數據訪問  
  2. string strConn="Integrated Security=SSPI;Initial Catalog=MyDatabase;Data Source=YY-POWERPC ";  
  3. SqlConnection myConnection = new SqlConnection (strConn);  
  4. myConnection.Open();  
  5. OleDb數據訪問  
  6. String strConn="Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=SSPI";  
  7. OleDbConnection myConnection=new OleDbConnection (strConn);  
  8. myConnection.Open(); 

上述步驟執行后,如果沒有異常拋出,便可成功完成和數據庫的連接。在完成了和數據庫的連接后,接下來就是建立一個DataAdapter對象,來完成可訪問數據庫的工作。DataAdapter的工作是后面DataSet的基礎,其內容就是建立一個DataSet和數據庫的中間層,來協調訪問。由于DataAdapter和DataSet的關系十分緊密,我就結合在一起介紹了。DataAdapter也分為SqlDataAdapter和OleDbDataAdatper兩種。下面給出一段典型代碼(OleDbDataAdapter的情況可類推):

  1. SqlDataAdapter myDataAdapter = new SqlDataAdapter ();  
  2. DataSet myDataSet = new DataSet ();  
  3. string strCom = "SELECT * FROM 會員信息表";  
  4. myDataAdapter.SelectCommand = new SqlCommand (strCom,myConnection);  
  5. SqlCommandBuilder myCB = new SqlCommandBuilder (myDataAdapter);  
  6. myDataAdapter.Fill (myDataSet,"會員信息表"); 

這段代碼用到了SqlDataAdapter、DataSet、SqlCommand、SqlCommandBuilder四個對象。從上圖中能看出,SqlDataAdapter的作用就是負責和數據庫的通訊訪問,同時和DataSet相連,他的內部有四個非常重要的Command對象(同樣分為SqlCommand和OleDbCommand),都是訪問數據庫必用的,分別為SelectCommand、InsertCommand、UpdateCommand、DeleteCommand對象。這些Command對象便是專門用來完成對數據庫的查詢、插入、更新、刪除操作,他們就像四個大臣,在DataAdapter的控制下分別主管各自的事情。其中SelectCommand是他們四個中的老大,由他能自動的構造生成另外的三個。構造生成的過程就是應用CommandBuilder。在這之前,我們只需要指定DataAdapter中的SelectCommand對象,就能了。

在設置好了SQL Select語句后,就能開始填充相應的數據集了。方法是應用DataAdapter的Fill方法,參數為DataSet及其中的某個DataTable。這里要著重講一講DataSet對象。如果你用過ADO中的Recordset對象,你可能會感覺到DataSet和Recordset的差別。Recordset一般只能應用于單表,即一個Recordset對應于一張表。而DataSet中有一個DataTableCollection,即一個DataTable集合,能包含多個DataTable對象。DataTable對象看上去就更加像一張表了,其中有DataRowCollection、DataColumnCollection、ConstraintCollection。他們分別代表DataRow(數據行)、DataColumn(數據列)、Constraint(約束關系)的對象集合。可能說這么多,你已有點兒迷糊了,先看一句代碼吧。

  1. myDataSet.Tables["MyTable"].Rows[3]["MyName"] = "楊揚"

怎么樣?是不是一下子就明白了許多。這是一句多么完美的OO思想表達出的語句啊!這句就是將DataSet下的一個名為MyTable的"虛表"中的第4行的MyName字段的內容改為"楊揚"。為什么叫"虛表"呢?這是因為ADO.NET的一個特點就是脫機連接數據庫。這樣能減少網絡通訊的壓力,提高效率。你可能會問DataColumn在哪呢?Rows[3]就表示了第4行記錄,換句話說Rows[3]就是個DataRow對象,一加上["MyName"]就自動定位到了MyName字段的內容。ADO.NET規定,訪問表中內容必須是先行后列的原則,Column["MyName"][3]是不允許的。當然,DataColumn也是什么重要的,比如想查看某列的列頭(Field),能用Column[1].ColumnName更改。

好了,目前我覺得你應該大體上明白C#下數據庫編程是怎么一回事了吧,其實這里只是講了一小部分,因為ADO.NET數據庫訪問技術包含的內容太多了,不是一兩遍文章就能說清的。更有許多許多有用的操作,比如添加、修改、刪除、更新、查詢等等都還沒有介紹。

【編輯推薦】

  1. 淺析C#正則表達式
  2. 實現DB2功能的C#數據庫編程實例
  3. C#語言操縱數據庫事務
  4. 概述C#語言異常處理
  5. 簡單介紹C#數組和函數
責任編輯:彭凡 來源: sudu.cn
相關推薦

2009-08-07 16:19:00

C#下數據庫編程

2009-08-25 16:36:16

C#進行數據庫編程

2009-08-07 15:38:15

精通C#數據庫編程

2010-05-14 09:08:10

C#Oracle

2024-04-03 00:06:03

2010-09-13 09:03:49

Access數據庫

2009-08-11 13:35:13

C# Berkeley

2009-08-25 17:13:57

C#串口編程

2024-03-04 18:49:59

反射C#開發

2024-04-18 09:56:16

2009-08-07 15:33:11

C#數據庫編程

2009-03-19 10:08:09

C#數據庫查詢

2009-08-25 12:50:32

數據庫常用C#代碼

2009-08-12 14:27:36

訪問MySQL數據庫C# ODBC

2010-10-26 15:21:11

連接Oracle數據庫

2009-08-07 15:26:38

C#數據庫編程實例

2009-08-25 10:44:08

C#接口定義接口

2009-08-25 10:57:09

C#接口

2009-09-04 17:23:21

C#數據庫連接對象

2009-07-31 17:01:21

C#存取Access數
點贊
收藏

51CTO技術棧公眾號

亚洲激情小视频| 99热国内精品| 日本二区视频| 人人妻人人澡人人爽欧美一区 | x99av成人免费| 日本丰满少妇一区二区三区| 成人美女视频在线观看18| 一区二区三区网站| 亚洲综合图色| 国产高清精品二区| 午夜av在线免费观看| 黄视频在线观看免费| 一道本在线免费视频| 国产九九九九九| 欧美在线一二三区| 亚洲综合自拍一区| 欧洲亚洲在线视频| 欧美在线激情视频| 97视频在线观看亚洲| 久久久久久国产免费 | 91久久在线观看| 国产成人一区二区在线| 欧美性资源免费| 91精品国产99| 日韩美女视频免费在线观看| 97久久伊人激情网| 97欧美精品一区二区三区| 九九九久久久久久| 欧美激情伊人电影| 欧美精品激情视频| 日韩免费在线观看视频| 国产精品丝袜高跟| 91老司机精品视频| 精品久久久久久综合日本| 欧美区高清在线| 日本三日本三级少妇三级66| 亚洲熟妇无码另类久久久| 午夜视频在线瓜伦| 蜜芽视频在线观看| 在线播放的av| 2021国产在线| 欧美特黄色片| 欧美日本成人| 亚洲国内欧美| 国产成人精品免费看| 久久精品视频网| 玉米视频成人免费看| 91精品福利视频| 日韩电影大片中文字幕| 日韩最新免费不卡| 日韩免费视频在线观看| 免费成人av网站| 无遮挡又爽又刺激的视频| 一个人看的免费视频色| av免费网站在线观看| www.成人在线.com| 欧美日韩在线大尺度| 国产成人99久久亚洲综合精品| 成人免费小视频| 精品中文字幕久久久久久| 一区av在线播放| 亚洲精品视频在线看| 欧美色图12p| 久久久久久久999| 四虎一区二区| 绯色av一区二区| 国产麻豆一区| 性欧美xxxx大乳国产app| 亚洲欧洲在线观看av| 日韩午夜精品视频| 久久久久久久网站| 亚洲图片小说在线| 三级国产三级在线| 韩国三级成人在线| 蜜臀精品久久久久久蜜臀| 亚洲成av人片观看| 欧美激情精品久久久| 亚洲成人精品电影在线观看| 手机福利在线| 男男gay无套免费视频欧美| 成人精品免费视频| 亚洲福利视频网站| 国精产品99永久一区一区| 欧美r片在线| 色哟哟精品丝袜一区二区| kk眼镜猥琐国模调教系列一区二区 | 成人一区二区三| jk漫画禁漫成人入口| 日韩av一区二区三区| 欧美午夜精品一区二区三区| 国产成人一区二区在线| 爱爱永久免费视频| 日韩伦理一区二区三区| 久久午夜免费电影| 久久精品亚洲94久久精品| 最近免费观看高清韩国日本大全| 国产一线二线在线观看| 免费一区视频| 日韩av综合网站| 黄色片免费在线观看视频| 污片视频在线免费观看| 丝袜美腿一区二区三区| 精品无人国产偷自产在线| 成人手机视频在线| 91精品国产66| 91麻豆免费看| 日本久久久久久久久| 资源视频在线播放免费| 99热精品久久| 欧美亚洲一区二区在线观看| 狠狠色噜噜狠狠色综合久 | 四季久久免费一区二区三区四区| 久久狠狠婷婷| 亚洲男人天堂久| 九一国产精品视频| 亚洲国产合集| 欧美视频日韩视频在线观看| 国产精品美女在线播放| 国产精选久久| 婷婷激情综合网| 亚洲精品在线免费看| 精品一区二区三区在线观看视频| 亚洲精品欧美二区三区中文字幕| 亚洲xxxx在线| 一本大道色婷婷在线| 国产精品美女久久久久aⅴ| 成人亚洲欧美一区二区三区| 欧美24videosex性欧美| 不卡的看片网站| 欧美三级视频在线| 国产在线无码精品| 精品国产一区二区三区av片| 精品国产电影一区二区| 黄网免费视频| 九九视频精品免费| 国产主播欧美精品| 97在线视频免费观看完整版| 一区二区在线观看av| 亚洲自拍三区| 天天天综合网| 久久精品99无色码中文字幕| 可以直接在线观看的av| 久久精品一区八戒影视| 欧美色图亚洲自拍| 精品香蕉视频| 不卡毛片在线看| 伊人在我在线看导航| 亚洲高清免费观看高清完整版在线观看 | 欧美激情一区二区三区久久久| 日本视频不卡| 亚洲高清三级视频| 可以免费看污视频的网站| 精品一区二区精品| 久久久精彩视频| 外国成人免费视频| 欧美一区二三区| 九九久久国产| 亚洲欧美激情在线视频| av在线播放国产| 色天天综合久久久久综合片| 国产va在线观看| 国产欧美日韩在线| 香蕉视频免费版| 麻豆一区二区三| 日韩成人av电影在线| 第一sis亚洲原创| 久久噜噜噜精品国产亚洲综合| 国内自拍亚洲| 国产午夜精品美女视频明星a级| 午夜激情视频在线观看| 在线观看亚洲a| 成人在线免费看| 欧美视频一区二区三区在线观看| 青青久在线视频| 色噜噜狠狠成人中文综合| 日本高清中文字幕二区在线| 欧美日韩国产精品一区| 色在线免费视频| 欧美日韩精品高清| 日本在线视频网址| 日韩精品免费综合视频在线播放 | 欧美一区欧美二区| 在线中文字幕电影| 亚洲国产精品久久91精品| 天堂成人av| 国产一区二区三区三区在线观看 | 中文字幕一区日韩电影| www一区二区三区| 国内精品一区二区三区| 精品亚洲成人| 国产乱码精品一区二区三区不卡| 国产一区二区三区久久久久久久久| 欧美日韩三区四区| 丁香激情综合国产| 免费福利片在线观看| 日韩欧美国产网站| 裤袜国产欧美精品一区| 91精品国产精品| 亚洲青涩在线| 日本福利视频在线|