第13章 Visual Basic.NET數(shù)據(jù)庫管理應用程序開發(fā)_第1頁
第13章 Visual Basic.NET數(shù)據(jù)庫管理應用程序開發(fā)_第2頁
第13章 Visual Basic.NET數(shù)據(jù)庫管理應用程序開發(fā)_第3頁
第13章 Visual Basic.NET數(shù)據(jù)庫管理應用程序開發(fā)_第4頁
第13章 Visual Basic.NET數(shù)據(jù)庫管理應用程序開發(fā)_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第十三章

VisualBasic.NET數(shù)據(jù)庫管理應用程序開發(fā)

13.1數(shù)據(jù)庫的基本概念13.1.1關(guān)系數(shù)據(jù)庫與二維表關(guān)系數(shù)據(jù)庫以二維表(稱為關(guān)系)的形式表示和保存數(shù)據(jù),每個二維表由表頭和表體兩部分組成。如表13.1所表示的是學生通訊錄表。

表13.1學生通訊錄表學號姓名性別年齡系別住址聯(lián)系電話s1趙亦女17計算機9#-1016885101s2錢爾男18信息10#-5016885501s3孫珊女20信息9#-1026885102s4李思男21自動化10#-2026885202s5周武男19計算機10#-4016885401表頭關(guān)系數(shù)據(jù)庫中的二維表與日常生活中人們填寫的表格類似,但加了一些約束的條件:(1)表中不允許出現(xiàn)相同的元組,即二維表中不允許存在完全相同的兩行記錄。(2)表中元組的順序(即行序)可任意,在一個關(guān)系中可以任意交換兩行的次序。(3)表中各個字段(或?qū)傩裕┍仨氂胁煌拿帧#?)表中每列必須是不可分的數(shù)據(jù)項,每列必須是原子的、不可再分的,即不能出現(xiàn)“列中套列”或“表中套表”的現(xiàn)象。13.1.2關(guān)系數(shù)據(jù)庫的有關(guān)概念1.字段的數(shù)據(jù)類型根據(jù)關(guān)系模型的要求,二維表的每列中的數(shù)據(jù)必須為同一數(shù)據(jù)類型2.候選鍵與主鍵能唯一標識關(guān)系中元組的一個屬性或?qū)傩约?,則稱該屬性或?qū)傩约癁楹蜻x鍵也稱候選關(guān)鍵字或候選碼。如果一個關(guān)系中有多個候選鍵,可以從中選擇一個作為查詢、插入或刪除元組的操作變量,被選用的候選鍵稱為主關(guān)系鍵(PrimaryKey),或簡稱為主鍵、主碼、關(guān)系鍵、關(guān)鍵字等。在關(guān)系中,所有記錄的主碼中的屬性必須具有確定的值,任意兩個記錄的主碼的取值不能完全相同。13.1.3關(guān)系數(shù)據(jù)庫的操作1.SQL語言對關(guān)系數(shù)據(jù)庫的操作一般通過SQL語言實現(xiàn),SQL語言是結(jié)構(gòu)化查詢語言(StructuredQueryLanguage)的縮寫

2.SQL語言對數(shù)據(jù)的操作SQL語言對數(shù)據(jù)庫中數(shù)據(jù)進行的操作主要有數(shù)據(jù)查詢和數(shù)據(jù)更新兩大類,在此給出其基本的語句格式。(1)數(shù)據(jù)查詢在SQL語言中,對數(shù)據(jù)庫中數(shù)據(jù)的查詢可以用Select語句實現(xiàn),在此只給出其其基本的語法格式,有關(guān)如下:SELECT〈字段名1〉[AS別名1][,〈字段名2〉[AS別名2],…]FROM〈表名〉[WHERE〈檢索條件〉][GROUPBY<列名1>[HAVING<條件表達式>]][ORDERBY<列名2>[ASC|DESC]]其中,尖括號中的內(nèi)容表示是必須寫的內(nèi)容,中括號內(nèi)的內(nèi)容可以省略,但尖括號和中括號本身不是命令的組成部分。(2)數(shù)據(jù)更新SQL語言的數(shù)據(jù)更新語句主要包括插入數(shù)據(jù)、修改數(shù)據(jù)和刪除數(shù)據(jù)三種語句。①插入數(shù)據(jù)插入數(shù)據(jù)是把新的記錄插入到一個存在的表中。插入數(shù)據(jù)使用語句INSERTINTO,語法格式為:

INSERTINTO<表名>[(<列名1>[,<列名2>…])]VALUES(<值>)②修改數(shù)據(jù)SQL語言可以使用UPDATE語句對表中的一行或多行記錄的某些列值進行修改,其語法格式為:

UPDATE<表名>

SET<列名>=<表達式>[,<列名>=<表達式>]…[WHERE<條件>]③刪除數(shù)據(jù)SQL語言使用DELETE語句刪除表中的一行或多行記錄,其語法格式為:

DELETEFROM<表名>[WHERE<條件>]其中,<表名>是指要刪除數(shù)據(jù)的表。WHERE子句指定待刪除的記錄應當滿足的條件,WHERE子句省略時,則刪除表中的所有記錄。

13.2ADO.NET簡介

13.2.1ADO.NET體系結(jié)構(gòu)ADO.NET體系結(jié)構(gòu)圖

ADO.NET提供了一組數(shù)據(jù)訪問服務的類,可用于對MicrosoftSQLServer、Oracle等數(shù)據(jù)源及通過OLEDB和XML公開的數(shù)據(jù)源的一致訪問。ADO.NET有兩個核心組件:DataSet和.NET數(shù)據(jù)提供者(即.NETDataProvider,包括Connection、Command、DataReader、DataAdapter4個核心對象)。ADO.NET的整個體系結(jié)構(gòu)如圖13.1所示。

13.2.2.NETDataProvider1..NETDataProvider的功能與分類.NETDataProvider(即.NET數(shù)據(jù)提供者)在.NET框架中的主要功能是擔當應用程序和數(shù)據(jù)源之間的接口,用于連接到數(shù)據(jù)庫、執(zhí)行命令和檢索結(jié)果。.NETDataProvider提供了訪問各種數(shù)據(jù)源的一組類庫,主要是為了統(tǒng)一對于各種類型數(shù)據(jù)源的訪問方式而設(shè)計的一套高效能的類數(shù)據(jù)庫。在對數(shù)據(jù)庫做數(shù)據(jù)訪問時,首先要與數(shù)據(jù)庫進行連接,連接最主要的目的是進行數(shù)據(jù)庫系統(tǒng)的連接、帳戶驗證與數(shù)據(jù)庫指定,接著通過查詢、新建、刪除、修改等SQL命令來進行數(shù)據(jù)的管理工作。但在使用程序來管理數(shù)據(jù)庫之前,要先確定使用哪種類型的.NETDataProvider來訪問數(shù)據(jù)庫,以便能正確地訪問數(shù)據(jù)庫。常用的.NETDataProvider主要有SQLServer.NETDataProvider、OLEDB.NETDataProvider和ODBC.NETDataProvider三種.NETDataProvider,在此主要介紹前兩種,如表13.2所示。表13.2兩種主要的.NETDataProvider及功能說明數(shù)據(jù)提供者所屬命名空間說明SQLServer.NETDataProviderSystem.Data.SqlClient專用于訪問MircosoftSQLServer7.0或更高版本的SQLServer數(shù)據(jù)庫OLEDB.NETDataProviderSystem.Data.OleDb是通用的數(shù)據(jù)庫訪問方法,可用于訪問Access、SQLServer、dBase、Excel、Oracle、Foxpro等格式的數(shù)據(jù)庫2..NETDataProvider中的核心對象與功能.NETDataProvider中包含了4個核心對象:Connection、Command、DataAdapter和DataReader。(1)Connection對象主要用于建立與數(shù)據(jù)源的連接,處理訪問數(shù)據(jù)源時所需的安全設(shè)置。(2)Command對象建立與數(shù)據(jù)源的連接后,可以利用Command對象對數(shù)據(jù)源執(zhí)行SQL命令并返回結(jié)果。Command對象可以把結(jié)果填充在DataReader中。(3)DataReader對象從數(shù)據(jù)源中只向前地讀取只讀的數(shù)據(jù)流。(4)DataAdapter對象該對象提供了Fill方法用于將數(shù)據(jù)源中的數(shù)據(jù)填充到DataSet中,并提供了Update方法用于將DataSet中修改后的數(shù)據(jù)更新到數(shù)據(jù)源。對于SQLServer.NETDataProvider和OLEDB.NETDataProvider,每種.NETDataProvider內(nèi)都有Connection、Command、DataAdapter以及DataReader對象。對于不同的.NETDataProvider,對應上述四種對象的類的真正名稱是不同的,如表13.3所示。

組件對象表13.3OLEDB和SQLServer.NETDataProvider數(shù)據(jù)操作類

13.2.3DataSet對象

DataSet(數(shù)據(jù)集)對象是ADO.NET的核心對象,DataSet對象支持對數(shù)據(jù)庫的脫機(或離線)訪問(即從數(shù)據(jù)源讀取數(shù)據(jù)之后,可將數(shù)據(jù)源連接斷開)。可以把DataSet看成是內(nèi)存中的一個數(shù)據(jù)庫。一個DataSet對象可包含若干個DataTable對象(數(shù)據(jù)表),實際的數(shù)據(jù)存儲在DataTable對象中;每個DataTable對象中又包含了DataColumn對象(字段)和DataRow(記錄)對象;多個表之間可能存在一定的關(guān)系,表間的關(guān)系用DataRelation對象來表示。

DataSet支持對數(shù)據(jù)的隨機(向前或向后)訪問。

13.2.4ADO.NET相關(guān)類的命名空間命名空間說明System.Data包含了組成ADO.NET體系結(jié)構(gòu)的一些基本類System.Data.OleDb包含了運用OLEDB類型的數(shù)據(jù)提供者對象的類System.Data.SqlClient包含了運用SQLServer類型的數(shù)據(jù)提供者對象的類表13.4ADO.NET相關(guān)類的命名空間13.2.5ADO.NET的聯(lián)機與脫機數(shù)據(jù)存取模式

1.聯(lián)機存取模式在聯(lián)機數(shù)據(jù)存取模式下,應用程序會持續(xù)連接到數(shù)據(jù)庫上,應用程序自始至終都和數(shù)據(jù)庫是連接著的。其數(shù)據(jù)存取的模式是Connection-Command-DataReader方法,如圖13.2所示。數(shù)據(jù)庫ConnectionCommandDataReader顯示結(jié)果使用Connection對象創(chuàng)建與數(shù)據(jù)庫的連接通過Command對象所提供的ExecuteReader方法,執(zhí)行SQL查詢命令,建立一個DataReader對象通過DataReader對象的方法,進行數(shù)據(jù)瀏覽圖13.2ADO.NET的聯(lián)機存取模式DataReader對象可以從數(shù)據(jù)庫中順向(Forward-Only)(即只能從頭到尾讀取數(shù)據(jù))逐條讀取數(shù)據(jù)流中的行,由于并不是一次將所有數(shù)據(jù)傳向客戶端的內(nèi)存中,因此,能提升應用程序的性能和降低系統(tǒng)的負荷量,使得執(zhí)行速度快且不占用內(nèi)存太多的資源。但是,在DataReader對象打開的時間內(nèi),必須一直和數(shù)據(jù)庫保持連接(即聯(lián)機),且讀取數(shù)據(jù)時必須是從頭到尾順序讀取,而不能隨機讀取。2.脫機存取模式.NETDataProviderDataAdapterCommandSelectCommandInsertCommandUpdateCommandDeleteCommandConnectionDataReader數(shù)據(jù)庫DataSet圖13.3ADO.NET脫機存取模式脫機存取模式是指應用程序并不一直保持和數(shù)據(jù)源的連接,它打開數(shù)據(jù)連接并讀出所需要的數(shù)據(jù),然后關(guān)閉連接。用戶可對讀出的這些數(shù)據(jù)進行操作,當需要更新數(shù)據(jù)或有其他請求時,就再次打開連接。

DataAdapter對象是數(shù)據(jù)庫和DataSet對象之間溝通的橋梁。這種模式運行效率高,適用于多客端的數(shù)據(jù)訪問,但這種方式須耗費較多的內(nèi)存空間。13.2.6ADO.NET開發(fā)數(shù)據(jù)庫應用程序的一般步驟

使用ADO.NET開發(fā)數(shù)據(jù)庫應用程序一般可分為以下幾個步驟:(1)根據(jù)要訪問的數(shù)據(jù)源情況,確定使用合適的.NETDataProvider。(2)建立與數(shù)據(jù)源的連接,需要使用Connection對象。(3)執(zhí)行對數(shù)據(jù)源的操作命令,通常是SQL命令,需要使用Command對象。(4)使用數(shù)據(jù)集對獲得的數(shù)據(jù)進行操作,需要作用DataReader、DataSet對象。(5)向用戶顯示數(shù)據(jù),需要使用有關(guān)數(shù)據(jù)控件。13.3ADO.NET對象及其編程

13.3.1創(chuàng)建和使用Connection對象

Connection對象主要用于建立與指定數(shù)據(jù)源的連接,處理訪問數(shù)據(jù)源時所需要的安全設(shè)置。1.Connection對象的常用屬性(1)ConnectionString:獲取或者設(shè)置用于打開數(shù)據(jù)庫的連接字符串。(2)ConnectionTimeout:在試圖建立連接的過程中,獲取在終止操作并產(chǎn)生錯誤之前等待的時間,也就是超時時間。(3)DataBase:獲取在數(shù)據(jù)庫服務器上打開的數(shù)據(jù)庫名。(4)DataSource:獲取所連接的數(shù)據(jù)庫服務器的實例名。2.Connection對象的常用方法(1)Open()方法:格式:PublicOverridesSubOpen()

功能:利用ConnectionString屬性所指定的設(shè)置打開一個數(shù)據(jù)庫連接。創(chuàng)建一個Connection對象并指定一個連接字符串并沒有打開一個指向數(shù)據(jù)庫的物理連接,需要調(diào)用對象的Open方法來打開連接。(2)Close()方法:格式:PublicOverridesSubClose()功能:關(guān)閉與數(shù)據(jù)庫的連接。Close方法來關(guān)閉Connection對象,不關(guān)閉打開的連接會影響系統(tǒng)性能和對應用程序的操作,所以使用結(jié)束后最好關(guān)閉連接。3.Connection對象的構(gòu)造函數(shù)及對象的創(chuàng)建(1)Connection對象的構(gòu)造函數(shù)Connection對象的創(chuàng)建是由其對應的構(gòu)造函數(shù)構(gòu)造完成的。在SQLServer.NETDataProvider中用類SqlConnection的構(gòu)造函數(shù)創(chuàng)建Connection對象,其構(gòu)造函數(shù)主要有以下兩種格式:①格式1:PublicSubNew()②格式2:PublicSubNew(connectionStringAsString)參數(shù)connectionString為連接字符串該字符串中指明了要連接的數(shù)據(jù)庫服務器名稱、數(shù)據(jù)庫名稱、登錄用戶名稱以及密碼等信息以下就是一個連接字符串:DataSource=CHEN\CHENSERVER;InitialCatalog=Teach;UserID=sa;Password=Chen(2)Connection對象的創(chuàng)建以下是利用SQLServer.NETDataProvider中的類SqlConnection的構(gòu)造函數(shù)創(chuàng)建Connection對象的兩種方法:①方法1:首先,利用SqlConnection類的構(gòu)造函數(shù)SqlConnection()創(chuàng)建一個未初始化的SqlConnection對象:格式:DimSqlConnection對象名AsNewSqlconnection()

然后,再用一個連接字符串初始化該對象:格式:SqlConnection對象名.Connectionstring=“連接字符串”例如:

DimconnAsnewSqlConnection()

conn.ConnectionString="DataSource=CHEN\CHENSERVER;InitialCatalog=Teach;UserID=sa;Password=Chen"②方法2:利用SqlConnection類的構(gòu)造函數(shù)SqlConnection(stringconnectionString)創(chuàng)建一個SqlConnection對象,并為該構(gòu)造函數(shù)的參數(shù)指定一個連接字符串。格式:DimSqlConnection對象名AsNewSqlconnection(連接字符串)例如:

DimconnAsnewSqlConnection("DataSource=CHEN\CHENSERVER;InitialCatalog=Teach;UserID=sa;Password=Chen")13.3.2創(chuàng)建和使用Command對象

1.Command對象的常用屬性(1)Connection:獲取或設(shè)定Command對象對數(shù)據(jù)源的操作所利用的那個Connection對象,例如我們想使Command對象cmd通過conn這個Connection對象對數(shù)據(jù)源進行數(shù)據(jù)操作,則可以將其Connection屬性的值設(shè)置為conn,即:cmd.Connection=cn。(2)CommandType:獲取或設(shè)置CommandText屬性中的內(nèi)容是SQL語句、數(shù)據(jù)表名稱還是存儲過程的名稱。CommandType的值為System.Data命名空間中的CommandType枚舉類型,該枚舉有以下3種成員:

CommandType.Text(默認值):表示命令類型為一字符串。

CommandType.TableDirect:命令類型為表名。

CommandType.StoredProcedure:命令類型為存儲過程。(3)CommandText:獲取或設(shè)置在數(shù)據(jù)源中執(zhí)行的SQL語句、表名或存儲過程。(4)CommandTimeout:獲取或設(shè)置超時時間。2.Command對象的常用方法(1)ExecuteReader()方法:格式:PublicFunctionExecuteReader()As

SqlDataReader功能:將Command對象的CommandText屬性中所指定的命令發(fā)送給Connection對象,并返回一個DataReader對象。常用來執(zhí)行返回數(shù)據(jù)集的Select語句。(2)ExecuteNonQuery()方法:格式:PublicOverridesFunctionExecuteNonQuery()AsInteger功能:針對Connection對象所連接的數(shù)據(jù)庫執(zhí)行SQL語句并返回受影響的行數(shù),該方法常用來查詢數(shù)據(jù)庫的結(jié)構(gòu)或創(chuàng)建諸如表等的數(shù)據(jù)庫對象,或通過該命令執(zhí)行UPDATE、INSERT、DELETE等不產(chǎn)生數(shù)據(jù)集的SQL語句。對于UPDATE、INSERT和DELETE語句,返回值為該命令所影響的行數(shù)。對于其他所有類型的語句,返回值為-1。3.Command對象的構(gòu)造函數(shù)與對象的創(chuàng)建在SQLServer.NETDataProvider中用類SqlCommand的構(gòu)造函數(shù)創(chuàng)建Command對象,其構(gòu)造函數(shù)有多種格式,其常用的格式是:格式:PublicSubNew(cmdTextAsString,connectionAsSqlConnection)說明:參數(shù)cmdText為需要發(fā)送的SQL命令,參數(shù)connection為已創(chuàng)建的與SQLServer建立連接的Connection對象。功能:用已創(chuàng)建的Connection對象和SQL命令創(chuàng)建一個Command對象。例如:用上面創(chuàng)建的Conneciton對象conn創(chuàng)建一個Command對象cmd:DimcmdAsNewSqlCommand("Select*FromS",conn)13.3.3創(chuàng)建和使用DataReader對象

1.DataReader對象的常用屬性(1)Connection:獲取DataReader對象關(guān)聯(lián)的Connection對象。(2)FieldCount:獲取當前記錄行中的字段數(shù)量(即列數(shù))。(3)RecordsAffected:獲取執(zhí)行SQL語句所更改、插入或刪除的記錄行數(shù)。(4)Item(i)或Item(“列名”):獲取當前記錄的第i列(第i個字段)上的數(shù)據(jù),在當前記錄中,用序號0、1、2…來分別表示每一個字段(或每一列)的序號,因此,借助該序號可以訪問當前記錄中的某一列上的數(shù)據(jù)。也可以用第二種格式,采用列名來訪問對應的列上的數(shù)據(jù)。2.DataReader對象的常用方法(1)Close()方法:格式:PublicOverridesSubClose()功能:關(guān)閉DataReader對象。(2)Read()方法:格式:PublicOverridesFunctionRead()AsBoolean功能:使DataReader對象所獲取的記錄集的當前記錄指針前進一個記錄行。如果記錄集中還有記錄(即還未到文件尾),則返回值為True,否則返回False。(3)Get×××()方法:格式:PublicOverridesFunctionGet×××(iAsInteger)As×××功能:以參數(shù)i的值為列的序號(從0記數(shù)),從當前記錄中讀取第i列上的數(shù)據(jù)。讀取的該列上的數(shù)據(jù)類型為“×××”,“×××”通常為某種數(shù)據(jù)類型說明符,如:Byte、Int32、String等。(4)GetName()方法:格式:PublicOverridesFunctionGetName(iAsInteger)AsString功能:取得序號為參數(shù)i所指定的列的字段名稱,在DataReader所獲取的記錄集中,各列的序號分別為0、1、2、…、FieldCount-1。(5)GetOrdinal()方法格式:PublicOverridesFunctionGetOrdinal( nameAsString)AsInteger功能:取得字段名稱為參數(shù)name所指定的列的序號。(6)GetValue()方法格式:PublicOverridesFunctionGetValue(iAsInteger)AsObject功能:取得當前記錄中列的序號(從0計數(shù))為參數(shù)i的字段數(shù)據(jù)。(7)IsDBNull()方法格式:PublicOverridesFunctionIsDBNull(iAsInteger)AsBoolean功能:取得當前記錄中列的序號(從0計數(shù))為參數(shù)i的字段數(shù)據(jù)是否有數(shù)據(jù),如果該字段的值不存在或已丟失,則該方法返回True,否則,返False?!纠?3.1】編寫一個程序,能讀取SQLServer服務器CHEN\CHENSERVER上的Teach數(shù)據(jù)庫中的學生信息數(shù)據(jù)表S中的各記錄,該數(shù)據(jù)表的結(jié)構(gòu)和內(nèi)容參見表13.1。13.3.4創(chuàng)建和使用DataSet對象

1.DataSet對象的組成DataSet對象Tables集合對象DataTable對象0DataTable對象1DataTable對象2DataTable對象N-1…….Tables(0)Tables(1)Tables(2)……Tables(N-1)DataSetDataTableDataTableDataTableDataRelation圖13.5DataSet對象的組成及Tables集合對象示意圖在DataSet集合中,各種對象類型的組成結(jié)構(gòu)層次,如圖13.6所示。圖13.6DataSet集合中各種對象類型的組成層次結(jié)構(gòu)圖

2.DataSet對象的構(gòu)造函數(shù)及對象的創(chuàng)建在SQLServer.NETDataProvider中用類DataSet的構(gòu)造函數(shù)創(chuàng)建DataSet對象,其構(gòu)造函數(shù)有多種格式,其常用的格式是:PublicSubNew()例如,要創(chuàng)建一個名稱為ds的DataSet對象,可用語句:DimdsAsNewDataSet()3.DataSet對象的Tables屬性DataSet對象的常用屬性為Tables屬性,該屬性的類型為DataTableCollection。其主要功能是獲取DataSet數(shù)據(jù)集中的所有數(shù)據(jù)表(DataTable)的集合。Tables屬性還具有以下子屬性和有關(guān)的方法:(1)Tables屬性的子屬性①Tables.Count子屬性:用于獲取DataSet集合中,所有DataTable對象的個數(shù)。②Tables(i)或Tables(“表名”):用于獲取DataSet集合中序號為i的DataTable對象(類型為DataTable)?;蛘哂谩氨砻眮慝@取DataSet集合中的某個DataTable對象。③Tables(i).TableName:取得Tables集合中序號為參數(shù)i的那個DataTable的表名。(2)Tables屬性的方法:①Tables.Add()方法:該方法有多種格式,其常用格式是:格式:PublicSubAdd(tableAsDataTable)功能:向當前DataSet數(shù)據(jù)集中,添加一個DataTable對象。②Tables.Clear()方法格式:PublicSubClear()功能:清除Tables集合中所有的DataTable對象。③Tables.Remove()方法有多種格式,其常用格式是:格式:PublicSubRemove(nameAsString)功能:從Tables集合中,移除表名為參數(shù)name所指定的DataTable對象。13.3.5創(chuàng)建和使用DataTable對象

1.DataTable對象的組成在DataSet集合中,每個DataTable對象由DataColumn、DataRow和DataRelation對象組成,這些對象的含義如下:(1)DataTable對象:代表創(chuàng)建在DataSet中的數(shù)據(jù)表,邏輯結(jié)構(gòu)與關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)表的結(jié)構(gòu)(二維表格結(jié)構(gòu))一致。(2)DataColumn對象:代表DataTable中的列(字段)。(3)DataRow對象:代表DataTable中的行(記錄)。(4)DataRelation對象:代表兩個表之間的關(guān)系。對于DataTable對象來說,從對象的組成層次結(jié)構(gòu)上,可以看作是DataColumn對象的集合和DataRow對象的集合。整個DataTable對象的組成層次結(jié)構(gòu)如圖13.7所示。圖13.7DataTable對象的組成結(jié)構(gòu)示意圖

2.DataTable對象的構(gòu)造函數(shù)與對象的創(chuàng)建在SQLServer.NETDataProvider中用類DataTable創(chuàng)建DataTable對象,其構(gòu)造函數(shù)有多種格式,比較常用的格式是:①格式1:PublicSubNew()功能:創(chuàng)建一個DataTable對象的實例。例如:DimdtAsNewDataTable()②格式2:PublicSubNew(tableNameAsString)功能:創(chuàng)建一個表名為參數(shù)tableName所指定的DataTable對象。例如:DimdtAsNewDataTable("MyTable")表示創(chuàng)建一個表名為“MyTable”的DataTable對象dt。3.DataTable對象常用屬性與方法(1)Columns屬性:用于獲取DataTable中的所有DataColumn對象的集合。它有以下常用的子屬性和方法:①Columns.Count子屬性:用于獲取Columns集合中所有列(DataColumn對象)的個數(shù)。②Columns(i).ColumnName子屬性:用于獲取或設(shè)置Columns集合中,序號為i的列(DataColumn對象)的列名(或字段名),其中i的取值為0、1、2…、M-1(M為總列數(shù))。③Columns(i).DataType子屬性:用于獲取或設(shè)置Columns集合中,序號為i的列(DataColumn對象)的數(shù)據(jù)類型,其中i的取值為0、1、2…、M-1(M為總列數(shù))。④Columns.Add()方法:該方法有多種格式,其常用格式是:格式:PublicFunctionAdd(columnNameAsString,typeAsType)AsDataColumn功能:向當前數(shù)據(jù)表中增加一列,該列的列名由參數(shù)columnName指定,類型由參數(shù)type指定。⑤Columns.Clear()方法:格式:PublicSubClear()功能:刪除當前數(shù)據(jù)表中的所有列。⑥Columns.Remove()方法:該方法有多種格式,其常用格式是:格式:PublicSubRemove(nameAsString)功能:從當前數(shù)據(jù)表中刪除一列,該列的名稱由參數(shù)name指定。(2)Rows屬性:用于獲取DataTable中的所有DataRow對象的集合。它有以下常用的子屬性和方法:①Rows.Count子屬性:用于獲取Rows集合中所有行(DataRow對象)的個數(shù)。②Rows(i).Item(j)或Rows(i).Item(“列名”)子屬性:用于獲取或設(shè)置Rows集合中,行序號為i(DataRow對象)的那行中列序號為j(或列名)的字段值,其中行序號i的取值為0、1、2…、N-1(N為總行數(shù)),列序號j的取值為0、1、2…、N-1(N為總列數(shù))。③Rows.Add()方法:該方法有多種格式,其常用格式是:格式:PublicSubAdd(rowAsDataRow)功能:向當前數(shù)據(jù)表中增加一個行(DataRow對象),該行由參數(shù)row指定。④Rows.Clear()方法:格式:PublicSubClear()⑤Rows.Remove()方法:格式:PublicSubRemove(rowAsDataRow)功能:從當前數(shù)據(jù)表中刪除一行(DataRow對象),該行由參數(shù)row指定。(3)NewRow()方法:格式:PublicFunctionNewRow()AsDataRow功能:依據(jù)當前DataTable對象中的各列的格式,產(chǎn)生一個新的DataRow對象。13.3.6創(chuàng)建和使用DataAdapter對象

1.DataAdapter對象的常用屬性DataAdapter對象的常用屬性如下:(1)SelectCommand:獲取或設(shè)置用于選擇數(shù)據(jù)源中的記錄的SQL語句或存儲過程,通常把該屬性設(shè)置為某個Command對象的名稱,該Command對象執(zhí)行SELECT語句用于讀取數(shù)據(jù)源中的記錄。(2)InsertCommand:獲取或設(shè)置用于將新記錄插入到數(shù)據(jù)源的SQL語句或存儲過程,通常把屬性設(shè)置為某個Command對象的名稱,該Command對象執(zhí)行INSERT語句用于向數(shù)據(jù)源中插入新記錄。(3)UpdateCommand:獲取或設(shè)置用于將更新數(shù)據(jù)源中記錄的SQL語句或存儲過程,通常把屬性設(shè)置為某個Command對象的名稱,該Command對象執(zhí)行UPDATE語句用于更新數(shù)據(jù)源中的記錄。(4)DeleteCommand:獲取或設(shè)置用于從數(shù)據(jù)源中刪除記錄的SQL語句或存儲過程,通常把屬性設(shè)置為某個Command對象的名稱,該Command對象執(zhí)行DELETE語句從數(shù)據(jù)源中刪除記錄。2.DataAdapter對象的常用方法(1)Fill()方法:Fill方法有多種重載格式,其主要功能是從數(shù)據(jù)源中提取數(shù)據(jù)并填充數(shù)據(jù)集對象DataSet,其常用的格式有:①格式1:PublicOverridesFunctionFill(dataSetAsDataSet)AsInteger功能:向參數(shù)dataset所指定的DataSet對象中添加或刷新數(shù)據(jù)源中返回的記錄行,并創(chuàng)建一個名為Table的DataTable對象。②格式2:PublicFunctionFill(dataSetAsDataSet, srcTableAsString)AsInteger功能:將數(shù)據(jù)源中返回的記錄行填充到dataset數(shù)據(jù)集中的以參數(shù)srcTable所命名的數(shù)據(jù)表中。(2)Update()方法:Update方法有多種重載格式,主要用于更新數(shù)據(jù)源,其常用的格式有:①格式1:PublicOverridesFunctionUpdate(dataSetAsDataSet)AsInteger功能:把對參數(shù)dataSet指定的數(shù)據(jù)集進行的插入、更新或刪除操作更新到數(shù)據(jù)源中,該方法常用于數(shù)據(jù)集中只有一個表的情況。②格式2:PublicFunctionUpdate( dataSetAsDataSet,srcTableAsString)AsInteger功能:把對參數(shù)dataSet指定的數(shù)據(jù)集中的由參數(shù)srcTable指定的表進行的插入、更新或刪除操作更新到數(shù)據(jù)源中,該方法常用于數(shù)據(jù)集中有多個表的情況。3.DataAdapter對象的構(gòu)造函數(shù)與對象的創(chuàng)建在SQLServer.NETDataProvider中用類SqlDataAdapter的構(gòu)造函數(shù)創(chuàng)建DataAdapter對象,其構(gòu)造函數(shù)有多種格式,其常用的格式是:①格式1:PublicSubNew()功能:創(chuàng)建DataAdapter的一個對象實例。例如:創(chuàng)建一個名稱為da的DataAdapter對象的實例的語句:DimdaAsNewSqlDataAdapter()②格式2:PublicSubNew(selectCommandTextAsString, selectConnectionAsSqlConnection)功能:以參數(shù)selectCommandText為SQL語句、參數(shù)selectConnection為連接對象創(chuàng)建一個SqlAdapter對象實例并對其進行初始化。【例13.2】編寫一個程序,能讀取SQLServer服務器CHEN\CHENSERVER上的Teach數(shù)據(jù)庫中的學生信息數(shù)據(jù)表S中的各記錄,并可逐條翻看每一條記錄。13.3.7數(shù)據(jù)綁定與DataGridView控件

(1)簡單數(shù)據(jù)綁定簡單數(shù)據(jù)綁定就是將控件的某個屬性綁定到數(shù)據(jù)集中的單個字段,每個控件僅顯示數(shù)據(jù)集中的某條記錄中的一個字段的值。這一類的控件常用的有標簽Label、文本框TextBox、單選按鈕RadioButton、復選

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論