在學習VB.NET視頻時,其中有幾個單元講到了.NET的資料庫設計與串連。對於資料庫的串連,其實我們並不陌生,原來在做紅皮書和機房收費系統的時候,我們都有接觸過,可是,在我的印象中,這些關於資料庫連接的知識很是模糊。對於資料庫連接對象更是一知半解。
回過頭來,翻了一遍紅皮書中的幾個執行個體,裡面講到了利用ADO控制項來串連資料庫,它涉及到的資料庫連接對象有7個(connection,command ,recordset,Field,Property,parameter,error)
那麼對於如今學習的.net中資料庫連接又涉及到了哪些對象呢?
其實,我們不難發現,無論是以前的ADO還是現在的.NET,在資料庫連接中都存在兩個永遠不變的對象connection和command,那麼在.net中它們是如何使用的呢?
1.Connection
資料庫連接對象,負責串連資料庫
具體使用:對於不同的資料提供者(provider)有不同的命名空間,但大體上都是一致的,如下所示以SQLserver為例:
<span style="font-family:SimSun;font-size:18px;">Imports ss=System.Data.SqlClient '聲明使用的命名空間Dim sConn as string,dbConn as ss.SqlConnectionsConn="Server=localhost; Database=Dbname;integrated Security=SSPI" '連接字串dbConn=new ss.SqlConnection(sConn) '使用前執行個體化連線物件dbConn.Open() '至此,就可以串連上資料庫來對資料庫中的資料進行操作了</span>
2.Command
資料庫命令對象,主要用來執行包括增加,刪除,修改及查詢等操作命令,也可用來執行預儲存程式。
根據資料庫提供者類型可將command對象分為四類分別是SqlCommand,OledbCommand,OdbcCommand,OracleCommand.
使用時,只需將它進行執行個體化即可
<span style="font-family:SimSun;font-size:18px;">Dim ssCmd as ss.SqlCommandssCmd=new ss.SqlCommand(strSql,sConn) 'strSql為命令語句如select等,sConn為串連字元接上</span>
當然,除此之外,command對象還有三個常用的方法:
ExecuteNonQuery():返回受影響的行數
ExecteScalar():從資料庫中檢索單個值,返回結果的第一行第一列
ExecuteReader():執行一個SQL語句,返回一個DataReader對象
談到DataReader對象,這是什麼意思呢?我們來介紹.net中的其餘對象
3.DataReader
一個簡單的資料集,用於從資料來源中檢索唯讀資料集,此對象在檢索資料時,只允許唯讀、順向方式讀取資料,不能返回,同時,此對象可通過command對象中的ExecuteReader()方法從資料來源中檢索資料來建立。
它的read()方法用來讀取下一條記錄,若讀到資料則返回TRUE,否則返回FALSE
在上述二者的基礎上看看它的具體使用:
<span style="font-family:SimSun;font-size:18px;">Dim ssReader as ss.SqlDataReader '和上面的command是一個道理strSql="select * from Customers order by lastName ASC,firstName ASC;"ssReader=ExecuteReader()'執行SQL指令'開始讀記錄,下面firstName和lastName為兩個列名,共組成一條記錄,每迴圈一次,返回一條記錄do while ssReader.Read() Fn=System.Convert.ToString(ssReader("firstName")) In=System.Convert.ToString(ssReader("lastName")) me.listbox1.Items.Add(In,+ Fn)loop</span>
那麼除此之外,在.設計.NET資料訪問時,為了能夠離線的對資料庫進行操作,便將ADO資料連線中的Recordset對象用DataSet代替,來實現離線操作資料庫的目的
在ADO中Recordset成為資料集對象,那麼在.NET中的資料集對象就是DataSet了!
4.DataSet
通俗一點講,其實就是一個離線的Recordset,用於離線處理資料,這是因為DataSet提供了一個離線的資料來源(通常以表格形式顯示),以減輕網路的負擔。
,在DataSet的使用過程中,還需要藉助於DataAdapter這個對象,那麼DataAdapter在這裡到底起什麼作用呢?
其實,我們如果認真分析,如果DataSet在用戶端想要進行離線處理,那麼雖然說是自己來充當資料來源,但是,如果它不和真正的資料來源串連起來,那麼最終還是起不到離線處理的效果。於是,我們必須在真正的資料來源和DataSet之間建起一座橋樑,來使二者之間能夠通訊。那麼這個橋樑就是DataAdapter,顯然二者是不可分割的。我們來具體瞭解一下DataAdapter這個對象。
5.DataAdapter
.NET中的配接器物件,充當資料來源和DataSet之間檢索和儲存資料的橋樑。那麼他是如何?二者之間的通訊的呢?
首先,它通過資料庫連接對象(connection)來串連資料來源,其次,通過資料庫命令對象(command)來使用規定的操作從資料來源來檢索資料將其送往DataSet,或從DataSet送往資料來源。
通過上述介紹,對於DataSet和DataAdapter的具體功能有了一定的瞭解,那麼二者是如何協調配合使用的呢?來看一個小例子:
仍然在上述connection和command部分代碼的基礎上進行操作:
<span style="font-family:SimSun;font-size:18px;">Dim adapter as ss.SqlDataAdapterDim ds as System.Data.DataSet’通過下面的程式碼來講資料來源中的資料傳到DataSet中Sql="select * from Products;"adapter=new ss.SqlDataAdapter(ssCmd) ’要傳輸的命令為ssCmd中的命令ds=new System.Data.DataSet() '執行個體化datasetssConn.Open() '這裡的open和close方法可省略,dataset會自動檢查串連是否成功Adapter.Fill(ds)ssConn.Close()’可利用下面的程式碼來將dataset中的資料提取到listbox中Ds.Tables("Table").TableName="Products"Dim row as System.Data.DataRow,name as stringFor each row in ds.Table("Products").Rows Name=convert.ToString(row.Item("ProductName")) Me.listBox1.Items.Add(name)Next row</span>
以上就是在.net視頻中講到的有關VisualStudio.net資料庫連接中常用到的對象。通過瞭解這些對象的準系統和用法,我們可以對.net資料庫連接有更近一步的瞭解.