明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

使用ADO.NET設(shè)計(jì)數(shù)據(jù)庫應(yīng)用程序

[摘要]認(rèn)識ADO和ADO.Net  ActiveX Data Object(簡稱ADO)是微軟提供的數(shù)據(jù)訪問模型,依據(jù)這個(gè)模型可很輕松的操作數(shù)據(jù)庫。同時(shí)ADO受到微軟所以開發(fā)工具的支持,所以無論是VB、VC、ASP開發(fā)都可以使用。所以開發(fā)ASP數(shù)據(jù)庫應(yīng)用程序,只需在代碼中嵌入SQL(結(jié)構(gòu)化查詢語言)命令...

  認(rèn)識ADO和ADO.Net

  ActiveX Data Object(簡稱ADO)是微軟提供的數(shù)據(jù)訪問模型,依據(jù)這個(gè)模型可很輕松的操作數(shù)據(jù)庫。同時(shí)ADO受到微軟所以開發(fā)工具的支持,所以無論是VB、VC、ASP開發(fā)都可以使用。所以開發(fā)ASP數(shù)據(jù)庫應(yīng)用程序,只需在代碼中嵌入SQL(結(jié)構(gòu)化查詢語言)命令,用戶就可以很輕松的輸入、更新、和刪除后臺的數(shù)據(jù)庫記錄。當(dāng)用戶端的瀏覽器填好表單所要求輸入的資料并按下“Submit(確認(rèn))”按鈕后,經(jīng)過互聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)傳送HTTP請求到WEB服務(wù)器,該請求在WEB服務(wù)器執(zhí)行一個(gè)表單所指定的Active Server Pages程序(后綴名為.ASP的文檔)。

  從ADO.Net不僅僅是ADO的一個(gè)簡單升級,它是微軟.NET戰(zhàn)略的一個(gè)重要組成部分,那么到底和以前有什么不同呢?現(xiàn)在就讓本文來告訴你。

  以前在ADO中進(jìn)行數(shù)據(jù)處理的主要方法是OLEDB,現(xiàn)在在ADO.Net中也是如此。但是微軟為了更好地支持目前廣泛使用的兩個(gè)數(shù)據(jù)庫Oracle和SQL Server對OLEDB做了專門的擴(kuò)展,它們分別是OracleClient和SQLClient 類,當(dāng)然由于數(shù)據(jù)庫產(chǎn)品很多,為了便于以前的OLEDB的程序升級,故也對OLEDB本身做了升級處理。在.Net中表現(xiàn)為OLEDB類。

  那么這三個(gè)類——OLEDB、OracleClient和SQLClient在編程使用上到底有什么不同呢?值得慶幸的是在.Net中進(jìn)行數(shù)據(jù)庫的編程時(shí),不管你使用上面提到的3個(gè)類中的哪一個(gè)類,這3個(gè)類在語法和用法上都大同小異,可以用一通百通來形容。

  怎樣學(xué)習(xí)ADO.Net技術(shù)

  筆者在學(xué)習(xí)和使用了ADO.Net編程后,總結(jié)出下面3個(gè)必需的步驟,而且這3個(gè)步驟的順序是絕對不可以調(diào)換的,如果在以后的編程中發(fā)現(xiàn)3個(gè)步驟的順序換了或缺了一個(gè)步驟,那么你的代碼肯定是錯(cuò)的:

  1.使用對應(yīng)類中的連接方法來連接數(shù)據(jù)庫。如使用SQLClient類,那么就用SqlConnection1建立數(shù)據(jù)庫的鏈接。

  2.打開此鏈接。

  3.執(zhí)行對應(yīng)類中的命令方法來指定要執(zhí)行的SQL語句。如使用SQLClient類就使用SqlCommand執(zhí)行指定的SQL語句。

  下面舉出的兩個(gè)例子就是在.Net中使用ADO.Net編程的代碼。由于SQL Server 在使用中比Oracle簡單,所以這里的數(shù)據(jù)庫使用Microsoft的SQL Server 2000。原因是它在安裝后無須配置就可以直接使用。既然訪問的是SQL Server,那么使用的類當(dāng)然是SQLClient類。這兩個(gè)例子是:

  1.在數(shù)據(jù)庫中對數(shù)據(jù)進(jìn)行添加,刪除,修改。

  2.利用ADO技術(shù)建立一個(gè)SQL Server 2000的數(shù)據(jù)庫。

  例 一

  啟動(dòng)SQL Server2000,然后建立一個(gè)數(shù)據(jù)庫和一個(gè)表,并且在表中一定要有主鍵,隨便輸入一些數(shù)據(jù)。完成后保存此表。

  本文使用的表結(jié)構(gòu)如下:


id列int型標(biāo)志列主鍵
d列char型  

  表名:使用系統(tǒng)默認(rèn)的表名table1

  然后打開VS.Net建立一個(gè)新的工程,并從工具箱中將“SqlDataAdapter”控件拖動(dòng)到窗口底部,隨后“數(shù)據(jù)適配器配置向?qū)А贝翱跁?huì)自動(dòng)運(yùn)行,按照向?qū)崾就瓿刹僮鳎ㄈ鐖D)。

  需要注意的是,在出現(xiàn)的“生成SQL語句”窗口中要輸入標(biāo)準(zhǔn)的select語句,在本例中我們將從表Table1中返回id和d這兩列。所以應(yīng)該輸入“SELECT id d FROM Table1”語句,當(dāng)然單擊“查詢生成器”按鈕系統(tǒng)也可以自動(dòng)生成這條語句。

  當(dāng)完成“數(shù)據(jù)適配器配置向?qū)А焙,你?huì)在窗口的底部發(fā)現(xiàn)系統(tǒng)自動(dòng)添加了“SqlConnection1”。接下來右擊“SqlDataAdapter1”,在快捷菜單中選擇“生成數(shù)據(jù)集”,隨后可以看見“生成數(shù)據(jù)集”設(shè)置窗口,保持默認(rèn)設(shè)置并單擊“確定”。現(xiàn)在又會(huì)發(fā)現(xiàn)在設(shè)計(jì)窗口下多了一個(gè)“Dataset11”。

  到此為止,就差最后一個(gè)控鍵“SqlCommand”,我們只要在工具欄中將它拖放過來并修改其屬性的“Connection”設(shè)置為“SqlConnection1”,并在“CommandText”屬性中利用“查詢生成器”為其生成select語句即可。到現(xiàn)在為止,我們就完成了ADO.Net訪問數(shù)據(jù)庫的一大半了。

  網(wǎng)格是顯示數(shù)據(jù)的最好方法,為了讓數(shù)據(jù)顯示在網(wǎng)格中我們需要添加此控件并且修改其屬性。添加的方法就是直接從工具箱中將它拖過來即可。不過它的屬性設(shè)置倒是很簡單,只要將“Datasource”設(shè)置為“Dataset11.table”即可,table是表示表的名字。

  最后添加兩行代碼即可完成對數(shù)據(jù)的添加、刪除、修改的操作。

  在Form1_Load部分加入“Sql DataAdapter1.FillDataSet11 ″Table1″”,代碼:

Private Sub Form1_LoadByVal sender As System.Object ByVal e As System.EventArgs Handles MyBase.Load
 SqlDataAdapter1.FillDataSet11 ″Table1″'將表中的數(shù)據(jù)添加到DataSet1中。
End Sub

  添加一個(gè)Button1在Button1_Click中加入“SqlDataAdapter1.UpdateDataSet11 ″Table1″”代碼。

Private Sub Button1_ClickByVal sender As System.Object ByVal e As System.EventArgs Handles Button1.Click
 SqlDataAdapter1.UpdateDataSet11″Table1″' 完成數(shù)據(jù)庫的添加、刪除、修改功能。
End Sub 

  程序說明:其中SqlDataAdapter1.Fil語句是把表中具體的數(shù)據(jù)添入DataSet11后,而SqlDataAdapter1.Update是表示當(dāng)完成對數(shù)據(jù)的修改后使用Update進(jìn)行數(shù)據(jù)庫的更新,使修改的數(shù)據(jù)生效。按“F5”運(yùn)行程序,你就可以看見表中的數(shù)據(jù)都顯示出來了,同時(shí)你可以隨意對它們進(jìn)行修改。如要?jiǎng)h除數(shù)據(jù),只要按下鍵盤上的“del”鍵即可。

  例一中使用控件的簡單介紹:

SqlDataAdapter:建立數(shù)據(jù)庫的連接,完成數(shù)據(jù)庫的添加、刪除、修改功能的配置。
SqlConnection:建立連接字符為SqlCommand提供連接依據(jù)。
DataSet1:加載表結(jié)構(gòu)和表數(shù)據(jù),以便在表格中顯示具體數(shù)據(jù)。
SqlCommand:用來執(zhí)行對表的各種具體的操作。

  例 二

  這里為了讓大家知道OLEDB和SQLClient在.Net中多么地接近,此例子將使用.Net中的OLEDB類。在這個(gè)程序中我們將使用ADO.Net中的OLEDB類和SQL語句來建立數(shù)據(jù)庫、表。接著上例添加2個(gè)命令按鈕,不修改任何屬性,并再加入如下代碼:

Public Class Form1
Inherits System.Windows.Forms.Form
Private Sub Button1_ClickByVal sender As System.Object ByVal e As System.EventArgs
Handles Button1.Click
 Dim con As New OleDb.OleDbCon nection″Provider=SQLOLEDB.1Integrated
 Security=SSPIPersist Security Info=FalseInitial Catalog=NorthwindData
 Source=.Use Procedure for Prepare=1Auto Translate=TruePacket
 Size=4096Workstation ID=JUse En cryption for Data=FalseTag with column collation
 when possible=False″'建立與數(shù)據(jù)庫的連接
 con.Open'打開連接
 Dim cmd As New OleDb.OleDbCommand″create database jk″ con '創(chuàng)建數(shù)據(jù)jk
cmd.ExecuteNonQuery'執(zhí)行創(chuàng)建命令
 con.Close'關(guān)閉連接
 '建立數(shù)據(jù)庫
End Sub

  程序說明:在Button1_Click中可以看出連接對象的連接字符串和前面由系統(tǒng)自動(dòng)生成的連接字符串不同。原因是我門要?jiǎng)?chuàng)建的新數(shù)據(jù)庫jk 還并不存在,所以為了使連接數(shù)據(jù)庫成功,并且有足夠的權(quán)利來建立jk數(shù)據(jù)庫,就必須通過以SQLServer管理員的身分連接一個(gè)SQL Server中已有的數(shù)據(jù)庫,獲得對整個(gè)SQL Server的訪問控制權(quán)限,再建立jk數(shù)據(jù)庫。這里連接的是Northwind數(shù)據(jù)庫。而后面的的Button2_Click直接連接到j(luò)k數(shù)據(jù)庫。因?yàn)槲覀円趈k數(shù)據(jù)庫中建立表。

Private Sub Button2_ClickByVal sender As System.Object ByVal e As
System.EventArgs Handles Button2.Click
Dim con2 As New OleDb.OleDbCon nection″Provider=SQLOLEDB.1Integrated
Security=SSPIPersist Security Info=FalseInitial Catalog=jkData Source=.Use
Procedure for Prepare=1Auto Trans late=TruePacket Size=4096Workstation ID=JUse
Encryption for Data=FalseTag with column collation when possible=False″'建立與數(shù)據(jù)庫的連接
con2.Open'打開連接
Dim cmd As New OleDb.OleDbCom mand″create table kkid int identity11 not
null constraint id primary keyname char4 not null″ con2 '建立表kk
cmd.ExecuteNonQuery
Dim cmd2 As New OleDb.OleDbCom mand″create table ppid int not nullads
char20 null″ con2 '建立表pp
cmd2.ExecuteNonQuery'執(zhí)行建立表命令
con2.Close'關(guān)閉連接
'建立2個(gè)表
End Sub
End Class

  程序說明:程序中Button2_Click建立了兩個(gè)表,kk和pp。其中kk包括一個(gè)種子列并且設(shè)定為主鍵。pp是一個(gè)一般的表。其實(shí)通過Button2_Click中所用的方法我們還可以建立數(shù)據(jù)庫中的存儲過程、約束等。其方法就是將OleDbCommand后的建立表的SQL語句換成存儲過程、約束的SQL語句即可。由于SQL語句已經(jīng)超出了本文的范圍,所以這里不做講解。

  總 結(jié)

  對于ADO.Net的編程來說除了要掌握ADO.Net的技術(shù)外,還必須掌握數(shù)據(jù)庫的一些知識。本文只是編寫了兩個(gè)簡單的數(shù)據(jù)庫程序,其目的是讓大家知道,ADO.Net的編程其實(shí)本身并不復(fù)雜。