認識ADO和ADO.Net
ActiveX Data Object(簡稱ADO)是微軟提供的數據訪問模型,依據這個模型可很輕松的操作數據庫。同時ADO受到微軟所以開發工具的支持,所以無論是VB、VC、ASP開發都可以使用。所以開發ASP數據庫應用程序,只需在代碼中嵌入SQL(結構化查詢語言)命令,用戶就可以很輕松的輸入、更新、和刪除後台的數據庫記錄。當用戶端的浏覽器填好表單所要求輸入的資料並按下“Submit(確認)”按鈕後,經過互聯網、內聯網傳送HTTP請求到WEB服務器,該請求在WEB服務器執行一個表單所指定的Active Server Pages程序(後綴名為.ASP的文檔)。
從ADO.Net不僅僅是ADO的一個簡單升級,它是微軟.Net戰略的一個重要組成部分,那麼到底和以前有什麼不同呢?現在就讓本文來告訴你。
以前在ADO中進行數據處理的主要方法是OLEDB,現在在ADO.Net中也是如此。但是微軟為了更好地支持目前廣泛使用的兩個數據庫Oracle和SQL Server對OLEDB做了專門的擴展,它們分別是OracleClient和SQLClIEnt 類,當然由於數據庫產品很多,為了便於以前的OLEDB的程序升級,故也對OLEDB本身做了升級處理。在.Net中表現為OLEDB類。
那麼這三個類——OLEDB、OracleClient和SQLClIEnt在編程使用上到底有什麼不同呢?值得慶幸的是在.Net中進行數據庫的編程時,不管你使用上面提到的3個類中的哪一個類,這3個類在語法和用法上都大同小異,可以用一通百通來形容。
怎樣學習ADO.Net技術
筆者在學習和使用了ADO.Net編程後,總結出下面3個必需的步驟,而且這3個步驟的順序是絕對不可以調換的,如果在以後的編程中發現3個步驟的順序換了或缺了一個步驟,那麼你的代碼肯定是錯的:
1.使用對應類中的連接方法來連接數據庫。如使用SQLClIEnt類,那麼就用SqlConnection1建立數據庫的鏈接。
2.打開此鏈接。
3.執行對應類中的命令方法來指定要執行的SQL語句。如使用SQLClIEnt類就使用SqlCommand執行指定的SQL語句。
下面舉出的兩個例子就是在.Net中使用ADO.Net編程的代碼。由於SQL Server 在使用中比Oracle簡單,所以這裡的數據庫使用Microsoft的SQL Server 2000。原因是它在安裝後無須配置就可以直接使用。既然訪問的是SQL Server,那麼使用的類當然是SQLClIEnt類。這兩個例子是:
1.在數據庫中對數據進行添加,刪除,修改。
2.利用ADO技術建立一個SQL Server 2000的數據庫。
例 一
啟動SQL Server2000,然後建立一個數據庫和一個表,並且在表中一定要有主鍵,隨便輸入一些數據。完成後保存此表。
本文使用的表結構如下:
表名:使用系統默認的表名table1
然後打開VS.Net建立一個新的工程,並從工具箱中將“SqlDataAdapter”控件拖動到窗口底部,隨後“數據適配器配置向導”窗口會自動運行,按照向導提示完成操作(如圖)。
需要注意的是,在出現的“生成SQL語句”窗口中要輸入標准的select語句,在本例中我們將從表Table1中返回id和d這兩列。所以應該輸入“SELECT id d FROM Table1”語句,當然單擊“查詢生成器”按鈕系統也可以自動生成這條語句。
當完成“數據適配器配置向導”後,你會在窗口的底部發現系統自動添加了“SqlConnection1”。接下來右擊“SqlDataAdapter1”,在快捷菜單中選擇“生成數據集”,隨後可以看見“生成數據集”設置窗口,保持默認設置並單擊“確定”。現在又會發現在設計窗口下多了一個“Dataset11”。
到此為止,就差最後一個控鍵“SqlCommand”,我們只要在工具欄中將它拖放過來並修改其屬性的“Connection”設置為“SqlConnection1”,並在“CommandText”屬性中利用“查詢生成器”為其生成select語句即可。到現在為止,我們就完成了ADO.Net訪問數據庫的一大半了。
網格是顯示數據的最好方法,為了讓數據顯示在網格中我們需要添加此控件並且修改其屬性。添加的方法就是直接從工具箱中將它拖過來即可。不過它的屬性設置倒是很簡單,只要將“Datasource”設置為“Dataset11.table”即可,table是表示表的名字。
最後添加兩行代碼即可完成對數據的添加、刪除、修改的操作。
在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″ '將表中的數據添加到DataSet1中。
End Sub
添加一個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″ ' 完成數據庫的添加、刪除、修改功能。
End Sub
程序說明:其中SqlDataAdapter1.Fil語句是把表中具體的數據添入DataSet11後,而SqlDataAdapter1.Update是表示當完成對數據的修改後使用Update進行數據庫的更新,使修改的數據生效。按“F5”運行程序,你就可以看見表中的數據都顯示出來了,同時你可以隨意對它們進行修改。如要刪除數據,只要按下鍵盤上的“del”鍵即可。
例一中使用控件的簡單介紹:
例 二
這裡為了讓大家知道OLEDB和SQLClIEnt在.Net中多麼地接近,此例子將使用.Net中的OLEDB類。在這個程序中我們將使用ADO.Net中的OLEDB類和SQL語句來建立數據庫、表。接著上例添加2個命令按鈕,不修改任何屬性,並再加入如下代碼:
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.1Integrated
Security=SSPIPersist Security Info=FalseInitial 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″ '建立與數據庫的連接
con.Open '打開連接
Dim cmd As New OleDb.OleDbCommand″create database jk″ con '創建數據jk
cmd.ExecuteNonQuery '執行創建命令
con.Close '關閉連接
'建立數據庫
End Sub
程序說明:在Button1_Click中可以看出連接對象的連接字符串和前面由系統自動生成的連接字符串不同。原因是我門要創建的新數據庫jk 還並不存在,所以為了使連接數據庫成功,並且有足夠的權利來建立jk數據庫,就必須通過以SQLServer管理員的身分連接一個SQL Server中已有的數據庫,獲得對整個SQL Server的訪問控制權限,再建立jk數據庫。這裡連接的是Northwind數據庫。而後面的的Button2_Click直接連接到jk數據庫。因為我們要在jk數據庫中建立表。
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.1Integrated
Security=SSPIPersist Security Info=FalseInitial 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″ '建立與數據庫的連接
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 '執行建立表命令
con2.Close '關閉連接
'建立2個表
End Sub
End Class
程序說明:程序中Button2_Click建立了兩個表,kk和pp。其中kk包括一個種子列並且設定為主鍵。pp是一個一般的表。其實通過Button2_Click中所用的方法我們還可以建立數據庫中的存儲過程、約束等。其方法就是將OleDbCommand後的建立表的SQL語句換成存儲過程、約束的SQL語句即可。由於SQL語句已經超出了本文的范圍,所以這裡不做講解。
總 結
對於ADO.Net的編程來說除了要掌握ADO.Net的技術外,還必須掌握數據庫的一些知識。本文只是編寫了兩個簡單的數據庫程序,其目的是讓大家知道,ADO.Net的編程其實本身並不復雜。