使用ADO.NET設(shè)計(jì)數(shù)據(jù)庫(kù)應(yīng)用程序
發(fā)表時(shí)間:2024-05-15 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]認(rèn)識(shí)ADO和ADO.Net ActiveX Data Object(簡(jiǎn)稱ADO)是微軟提供的數(shù)據(jù)訪問模型,依據(jù)這個(gè)模型可很輕松的操作數(shù)據(jù)庫(kù)。同時(shí)ADO受到微軟所以開發(fā)工具的支持,所以無論是VB、VC、ASP開發(fā)都可以使用。所以開發(fā)ASP數(shù)據(jù)庫(kù)應(yīng)用程序,只需在代碼中嵌入SQL(結(jié)構(gòu)化查詢語言)命令...
認(rèn)識(shí)ADO和ADO.Net
ActiveX Data Object(簡(jiǎn)稱ADO)是微軟提供的數(shù)據(jù)訪問模型,依據(jù)這個(gè)模型可很輕松的操作數(shù)據(jù)庫(kù)。同時(shí)ADO受到微軟所以開發(fā)工具的支持,所以無論是VB、VC、ASP開發(fā)都可以使用。所以開發(fā)ASP數(shù)據(jù)庫(kù)應(yīng)用程序,只需在代碼中嵌入SQL(結(jié)構(gòu)化查詢語言)命令,用戶就可以很輕松的輸入、更新、和刪除后臺(tái)的數(shù)據(jù)庫(kù)記錄。當(dāng)用戶端的瀏覽器填好表單所要求輸入的資料并按下“Submit(確認(rèn))”按鈕后,經(jīng)過互聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)傳送HTTP請(qǐng)求到WEB服務(wù)器,該請(qǐng)求在WEB服務(wù)器執(zhí)行一個(gè)表單所指定的Active Server Pages程序(后綴名為.ASP的文檔)。
從ADO.Net不僅僅是ADO的一個(gè)簡(jiǎn)單升級(jí),它是微軟.NET戰(zhàn)略的一個(gè)重要組成部分,那么到底和以前有什么不同呢?現(xiàn)在就讓本文來告訴你。
以前在ADO中進(jìn)行數(shù)據(jù)處理的主要方法是OLEDB,現(xiàn)在在ADO.Net中也是如此。但是微軟為了更好地支持目前廣泛使用的兩個(gè)數(shù)據(jù)庫(kù)Oracle和SQL Server對(duì)OLEDB做了專門的擴(kuò)展,它們分別是OracleClient和SQLClient 類,當(dāng)然由于數(shù)據(jù)庫(kù)產(chǎn)品很多,為了便于以前的OLEDB的程序升級(jí),故也對(duì)OLEDB本身做了升級(jí)處理。在.Net中表現(xiàn)為OLEDB類。
那么這三個(gè)類——OLEDB、OracleClient和SQLClient在編程使用上到底有什么不同呢?值得慶幸的是在.Net中進(jìn)行數(shù)據(jù)庫(kù)的編程時(shí),不管你使用上面提到的3個(gè)類中的哪一個(gè)類,這3個(gè)類在語法和用法上都大同小異,可以用一通百通來形容。
怎樣學(xué)習(xí)ADO.Net技術(shù)
筆者在學(xué)習(xí)和使用了ADO.Net編程后,總結(jié)出下面3個(gè)必需的步驟,而且這3個(gè)步驟的順序是絕對(duì)不可以調(diào)換的,如果在以后的編程中發(fā)現(xiàn)3個(gè)步驟的順序換了或缺了一個(gè)步驟,那么你的代碼肯定是錯(cuò)的:
1.使用對(duì)應(yīng)類中的連接方法來連接數(shù)據(jù)庫(kù)。如使用SQLClient類,那么就用SqlConnection1建立數(shù)據(jù)庫(kù)的鏈接。
2.打開此鏈接。
3.執(zhí)行對(duì)應(yīng)類中的命令方法來指定要執(zhí)行的SQL語句。如使用SQLClient類就使用SqlCommand執(zhí)行指定的SQL語句。
下面舉出的兩個(gè)例子就是在.Net中使用ADO.Net編程的代碼。由于SQL Server 在使用中比Oracle簡(jiǎn)單,所以這里的數(shù)據(jù)庫(kù)使用Microsoft的SQL Server 2000。原因是它在安裝后無須配置就可以直接使用。既然訪問的是SQL Server,那么使用的類當(dāng)然是SQLClient類。這兩個(gè)例子是:
1.在數(shù)據(jù)庫(kù)中對(duì)數(shù)據(jù)進(jìn)行添加,刪除,修改。
2.利用ADO技術(shù)建立一個(gè)SQL Server 2000的數(shù)據(jù)庫(kù)。
例 一
啟動(dòng)SQL Server2000,然后建立一個(gè)數(shù)據(jù)庫(kù)和一個(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è)置并單擊“確定”,F(xiàn)在又會(huì)發(fā)現(xiàn)在設(shè)計(jì)窗口下多了一個(gè)“Dataset11”。
到此為止,就差最后一個(gè)控鍵“SqlCommand”,我們只要在工具欄中將它拖放過來并修改其屬性的“Connection”設(shè)置為“SqlConnection1”,并在“CommandText”屬性中利用“查詢生成器”為其生成select語句即可。到現(xiàn)在為止,我們就完成了ADO.Net訪問數(shù)據(jù)庫(kù)的一大半了。
網(wǎng)格是顯示數(shù)據(jù)的最好方法,為了讓數(shù)據(jù)顯示在網(wǎng)格中我們需要添加此控件并且修改其屬性。添加的方法就是直接從工具箱中將它拖過來即可。不過它的屬性設(shè)置倒是很簡(jiǎn)單,只要將“Datasource”設(shè)置為“Dataset11.table”即可,table是表示表的名字。
最后添加兩行代碼即可完成對(duì)數(shù)據(jù)的添加、刪除、修改的操作。
在Form1_Load部分加入“Sql DataAdapter1.FillDataSet11 ″Table1″”,代碼:
Private Sub Form1_LoadByVal sender As System.Object ByVal e As System.EventArgs Handles MyBase.Load
SqlDataAdapter1.FillDataSet11 ″Table1″'將表中的數(shù)據(jù)添加到DataSet1中。
End Sub
添加一個(gè)Button1在Button1_Click中加入“SqlDataAdapter1.UpdateDataSet11 ″Table1″”代碼。
Private Sub Button1_ClickByVal sender As System.Object ByVal e As System.EventArgs Handles Button1.Click
SqlDataAdapter1.UpdateDataSet11″Table1″' 完成數(shù)據(jù)庫(kù)的添加、刪除、修改功能。
End Sub
程序說明:其中SqlDataAdapter1.Fil語句是把表中具體的數(shù)據(jù)添入DataSet11后,而SqlDataAdapter1.Update是表示當(dāng)完成對(duì)數(shù)據(jù)的修改后使用Update進(jìn)行數(shù)據(jù)庫(kù)的更新,使修改的數(shù)據(jù)生效。按“F5”運(yùn)行程序,你就可以看見表中的數(shù)據(jù)都顯示出來了,同時(shí)你可以隨意對(duì)它們進(jìn)行修改。如要?jiǎng)h除數(shù)據(jù),只要按下鍵盤上的“del”鍵即可。
例一中使用控件的簡(jiǎn)單介紹:
SqlDataAdapter: | 建立數(shù)據(jù)庫(kù)的連接,完成數(shù)據(jù)庫(kù)的添加、刪除、修改功能的配置。 |
SqlConnection: | 建立連接字符為SqlCommand提供連接依據(jù)。 |
DataSet1: | 加載表結(jié)構(gòu)和表數(shù)據(jù),以便在表格中顯示具體數(shù)據(jù)。 |
SqlCommand: | 用來執(zhí)行對(duì)表的各種具體的操作。 |
例 二
這里為了讓大家知道OLEDB和SQLClient在.Net中多么地接近,此例子將使用.Net中的OLEDB類。在這個(gè)程序中我們將使用ADO.Net中的OLEDB類和SQL語句來建立數(shù)據(jù)庫(kù)、表。接著上例添加2個(gè)命令按鈕,不修改任何屬性,并再加入如下代碼:
Public Class Form1
Inherits System.Windows.Forms.Form
Private Sub Button1_ClickByVal sender As System.Object ByVal e As System.EventArgs
Handles Button1.Click
Dim con As New OleDb.OleDbCon nection″Provider=SQLOLEDB.1I(yíng)ntegrated
Security=SSPIPersist Security Info=FalseI(yíng)nitial Catalog=NorthwindData
Source=.Use Procedure for Prepare=1Auto Translate=TruePacket
Size=4096Workstation ID=JUse En cryption for Data=FalseTag with column collation
when possible=False″'建立與數(shù)據(jù)庫(kù)的連接
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ù)庫(kù)
End Sub
程序說明:在Button1_Click中可以看出連接對(duì)象的連接字符串和前面由系統(tǒng)自動(dòng)生成的連接字符串不同。原因是我門要?jiǎng)?chuàng)建的新數(shù)據(jù)庫(kù)jk 還并不存在,所以為了使連接數(shù)據(jù)庫(kù)成功,并且有足夠的權(quán)利來建立jk數(shù)據(jù)庫(kù),就必須通過以SQLServer管理員的身分連接一個(gè)SQL Server中已有的數(shù)據(jù)庫(kù),獲得對(duì)整個(gè)SQL Server的訪問控制權(quán)限,再建立jk數(shù)據(jù)庫(kù)。這里連接的是Northwind數(shù)據(jù)庫(kù)。而后面的的Button2_Click直接連接到j(luò)k數(shù)據(jù)庫(kù)。因?yàn)槲覀円趈k數(shù)據(jù)庫(kù)中建立表。
Private Sub Button2_ClickByVal sender As System.Object ByVal e As
System.EventArgs Handles Button2.Click
Dim con2 As New OleDb.OleDbCon nection″Provider=SQLOLEDB.1I(yíng)ntegrated
Security=SSPIPersist Security Info=FalseI(yíng)nitial Catalog=jkData Source=.Use
Procedure for Prepare=1Auto Trans late=TruePacket Size=4096Workstation ID=JUse
Encryption for Data=FalseTag with column collation when possible=False″'建立與數(shù)據(jù)庫(kù)的連接
con2.Open'打開連接
Dim cmd As New OleDb.OleDbCom mand″create table kkid int identity11 not
null constraint id primary keyname char4 not null″ con2 '建立表kk
cmd.ExecuteNonQuery
Dim cmd2 As New OleDb.OleDbCom mand″create table ppid int not nullads
char20 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ù)庫(kù)中的存儲(chǔ)過程、約束等。其方法就是將OleDbCommand后的建立表的SQL語句換成存儲(chǔ)過程、約束的SQL語句即可。由于SQL語句已經(jīng)超出了本文的范圍,所以這里不做講解。
總 結(jié)
對(duì)于ADO.Net的編程來說除了要掌握ADO.Net的技術(shù)外,還必須掌握數(shù)據(jù)庫(kù)的一些知識(shí)。本文只是編寫了兩個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)程序,其目的是讓大家知道,ADO.Net的編程其實(shí)本身并不復(fù)雜。