大二6系下cc第7講_第1頁
大二6系下cc第7講_第2頁
大二6系下cc第7講_第3頁
大二6系下cc第7講_第4頁
大二6系下cc第7講_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C++和C#第7講盛浩1主要內(nèi)容ADO.NET1數(shù)據(jù)集及其操作2數(shù)據(jù)綁定231、ADO.NET3主要內(nèi)容:掌握ADO.NET結(jié)構(gòu)組及其關(guān)系掌握數(shù)據(jù)提供程序及各部分作用初步掌握Connection對象的配置及使用掌握Command對象常用方法成員及應(yīng)用掌握DataReader對象常用方法成員及應(yīng)用ADO.NET4ADO(ActiveDataObjects)是Microsoft開發(fā)的面向?qū)ο蟮臄?shù)據(jù)訪問庫。ADO.NET是ADO的后續(xù)技術(shù),是.NET提供的、為訪問各種數(shù)據(jù)源提供統(tǒng)一接口和方法的類。ADO.NET包括兩大部分:數(shù)據(jù)提供程序:負(fù)責(zé)與物理數(shù)據(jù)庫的連接數(shù)據(jù)集(DataSet):代表的數(shù)據(jù).NET數(shù)據(jù)提供程序5根據(jù)將要訪問的數(shù)據(jù)庫類型,.NET框架提供了不同的數(shù)據(jù)提供程序,常用的如:System.Data.SqlClient命名空間提供程序用以訪問

SQL

Server數(shù)據(jù)庫System.Data.OleDb命名空間提供程序用以訪問任何與OLE

DB兼容的數(shù)據(jù)庫ADO.NET的對象模型ADO.NET是.NET應(yīng)用程序的數(shù)據(jù)訪問模型,它能用于訪問關(guān)系型數(shù)據(jù)庫系統(tǒng)。ADO.NET對象模型有五個(gè)主要的組件,分別是:Connection對象、Command對象、DataReader對象、

DataSet對象以及DataAdapter對象。實(shí)現(xiàn)接口OLE

DB提供程序SQL

Server

提供程序?qū)崿F(xiàn)功能ConnectionOleDbConnectionSqlConnection建立對物理數(shù)據(jù)庫的連接CommandOleDbCommandSqlCommand用于執(zhí)行數(shù)據(jù)庫操作命令DataReaderOleDb

DataReaderSql

DataReader用于訪問一個(gè)只讀、向前的數(shù)據(jù)流DataSetOleDb

DataSetSql

DataSet用于存放數(shù)據(jù)DataAdapterOleDb

DataAdapterSql

DataAdapter用以負(fù)責(zé)數(shù)據(jù)集同物理數(shù)據(jù)源的通信ADO.NET的對象模型71.

Connection對象(連接對象)Connection對象表示與數(shù)據(jù)源之間的連接,用它來建立或斷開與數(shù)據(jù)庫的連接。Connection對象起到渠道的作用,其他對象如DataAdapter和Command對象通過它與數(shù)據(jù)庫通信,以提交查詢并獲取查詢結(jié)果。當(dāng)使用OLE

DB數(shù)據(jù)提供程序時(shí),要使用

System.Data.OleDb空間的OleDbConnection對象,使用

SQL

Server

數(shù)據(jù)提供程序時(shí),要使用位于

System.Data.SqlClient命名空間的SqlConnection對象。ADO.NET的對象模型8以SqlConnection類為例:string

connStr=“server=(local);

Initial

Catalog=students;userId=sa;password=1234”;SqlConnection

conn=new

SqlConnection(connStr);conn.Open(

);連接字符串ConnectionString連接字符串包含由一些“屬性名=值”對組成的集合,每個(gè)“屬性名=值”對都由分號隔開string

connStr=“server=(local);

Initial

Catalog=students;userId=sa;password=1234”;server為服務(wù)器地址,值local表示使用本地機(jī)器。

server關(guān)鍵字也可以用DataSource來代替,即字符串可以寫成string

connStr=“Data

Source=(local);

Initial

Catalog=students;userId=sa;password=1234”;ADO.NET的對象模型9Initial

Catalog指明了連接使用的數(shù)據(jù)庫,userID和password則分別指明了訪問數(shù)據(jù)庫時(shí)使用的用戶名和密碼。如果在安裝數(shù)據(jù)庫軟件時(shí)選擇的身份驗(yàn)證方式為windows身份驗(yàn)證模式,則應(yīng)使用如下連接字符串:string

connStr=“Data

Source=(local);

InitialCatalog=students;

Integrated

Security=SSPI”;IntegratedSecurity=SSPI表示連接時(shí)使用的是windows身份驗(yàn)證模式。ADO.NET的對象模型102.

Command對象(數(shù)據(jù)命令)建立數(shù)據(jù)連接之后,就可以執(zhí)行數(shù)據(jù)訪問操作和數(shù)據(jù)操縱操作了,一般對數(shù)據(jù)庫的操作被概括為Create、Read、Update和Delete。ADO.NET中定義Command類去執(zhí)行這些操作。在.NET中存在SqlCommand和OleDbCommand兩種類,兩者類似。ADO.NET的對象模型11Command對象通常包括的內(nèi)容有:一個(gè)連接(Connection):命令對象所使用的連接對象;使用它與數(shù)據(jù)庫通信。命令的名稱或文本(CommandText):設(shè)置要對數(shù)據(jù)源執(zhí)行的SQL語句或存儲過程。命令類型(CommandType):指明命令的類型,是存儲過程還是普通SQL文本。參數(shù)(Patameters):參數(shù)集合,可以分別設(shè)置或者讀取這些參數(shù)。CommandText的內(nèi)容和CommandType有關(guān):當(dāng)類型為StoreProcedure時(shí),CommandText屬性為存儲過程的名稱當(dāng)類型為TableDirect時(shí),CommandText屬性為要訪問的表的名稱當(dāng)類型為Text時(shí),則CommandText屬性為SQL語句默認(rèn)為TextADO.NET的對象模型12Command對象提供了四個(gè)方法:ExecuteNonQuery:執(zhí)行不返回結(jié)果的命令,通常使用這個(gè)命令執(zhí)行插入、更新或者刪除操作;ExecuteScalar:執(zhí)行返回單個(gè)值的命令;ExecuteReader:執(zhí)行命令,將結(jié)果集填充DataReader對象;ExecuteXmlReader:SqlCommand對象特有的方法,該方法執(zhí)行將返回XML字符串的命令,返回一個(gè)包含所返回的XML的System.Xml.XmlReader對象。ADO.NET的對象模型13DataReader對象DataReader用于以最快的速度檢索并檢查查詢所返回的行??墒褂肈ataReader對象來檢查查詢結(jié)果,一次檢查一行。當(dāng)移向下一行時(shí),前一行的內(nèi)容就會被放棄。由

DataReader返回的數(shù)據(jù)是只讀,不支持更新操作。所以DataReader對象使用起來不但節(jié)省了資源而且效率高。另外,因?yàn)镈ataReader對象不用把數(shù)據(jù)全部傳回,所以降低了網(wǎng)絡(luò)的負(fù)載。ADO.NET的對象模型144.

DataSet對象DataSet對象可視為暫存區(qū)??梢园褦?shù)據(jù)庫中查到的信息保存起來,甚至可以顯示整個(gè)數(shù)據(jù)庫。

從其名稱可以看出,DataSet對象包含一個(gè)數(shù)據(jù)集??梢詫ataSet對象視為許多DataTable對象(存儲在DataSet對象的Tables集合中)的容器。數(shù)據(jù)集(DataSet)15DataTablesColumnsDataColumnRowsRowConstraintsConstraintDataRelation數(shù)據(jù)集(DataSet)是記錄在內(nèi)存中的數(shù)據(jù),類似一個(gè)簡化的關(guān)系數(shù)據(jù)庫,包含表及表這間的關(guān)系。DataSetDataTableCollection

DataRelationCollctionADO.NET的對象模型165.

DataAdapter對象DataAdapter對象充當(dāng)數(shù)據(jù)庫和ADO.NET對象模型中非連接對象之間的橋梁。DataAdapter對象類的Fill方法提供了一種高效機(jī)制,用于將查詢結(jié)果引入DataSet或DataTable中,以便能夠脫機(jī)處理數(shù)據(jù)。還可以利用DataAdapter對象向數(shù)據(jù)庫提交存儲在DataSet對象中的掛起更改。ADO.NET的對象模型17利用Connection、Command和DataReader對象訪問數(shù)據(jù)庫,只能從數(shù)據(jù)庫讀取數(shù)據(jù),不能添加、修改和刪除記錄。如果只想進(jìn)行查詢,這種方

式效率更高一些;利用Connection、Command、DataAdapter和DataSet對象,這種方式比較靈活,不僅可以對數(shù)據(jù)庫進(jìn)行查詢操作,還可以進(jìn)行增加、刪除和修改等操作。ADO.NET數(shù)據(jù)庫ConnectionDataAdapterCommandDataReaderDataSet應(yīng)用程序數(shù)據(jù)提供程序ADO.NET18實(shí)例1:利用DateReader對象讀取數(shù)據(jù)19通過ADO.NET數(shù)據(jù)控件提供連接并讀取數(shù)據(jù)記錄建立數(shù)據(jù)庫數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫內(nèi)容實(shí)例1:利用DateReader對象讀取數(shù)據(jù)2.

建立程序與數(shù)據(jù)庫的連接20using

System.Data;using

System.Data.OleDb;建立數(shù)據(jù)庫連接;using

System.Data;using

System.Data.SqlClient;建立一個(gè)Console程序;加入數(shù)據(jù)訪問的命名空間;連接access數(shù)據(jù)庫連接SQLServer數(shù)據(jù)庫定義了一個(gè)字符串類型的connStr變量,存放連接數(shù)據(jù)庫的連接字符串。新建一個(gè)數(shù)據(jù)庫連接對象(SQLConnection\OleDbConnection),用于連接數(shù)據(jù)庫。OleDbConnection

conn

=

new

OleDbConnection();string

connStr

=

"Provider=Microsoft.Jet.OLEDB.4.0;Data

Source=";connStr

+=

@"C:\Users\t420s\Documents\student.mdb";conn.ConnectionString

=

connStr;實(shí)例1:利用DateReader對象讀取數(shù)據(jù)3.

打開/關(guān)閉數(shù)據(jù)庫連接調(diào)用conn對象的Open方法打開數(shù)據(jù)庫連接conn.Open();if

(conn.State==ConnectionState.Open)Console.WriteLine("連接成功");conn.Close();if

(conn.State==ConnectionState.Closed)Console.WriteLine("關(guān)閉成功");4.

新建OleDbCommand對象,該對象用于向數(shù)據(jù)庫發(fā)出命令OleDbCommand

cmd=

new

OleDbCommand();cmd.CommandType=CommandType.Text;cmd.Connection=

conn;cmd.CommandText="select*

from

stu";21實(shí)例1:利用DateReader對象讀取數(shù)據(jù)cmd對象的執(zhí)行結(jié)果保存在OleDataReader對象

reader中,一般用while循環(huán)從數(shù)據(jù)讀取器中獲取數(shù)據(jù)OleDbDataReader

rd

=

cmd.ExecuteReader();string

strOutput;while

(rd.Read()){strOutput=string.Format("編號:{0},姓名:{1},

學(xué)號:{2},班級:{3},性別:{4},平均分:{5}",rd.GetInt32(0),

rd.GetString(1),

rd.GetInt32(2),

rd.GetDouble(3),rd.GetString(4),

rd.GetDouble(5));Console.WriteLine(strOutput);}數(shù)據(jù)讀取以后,應(yīng)該關(guān)閉數(shù)據(jù)讀取器rd.Close();22try{OleDbConnection

conn

=

new

OleDbConnection();string

connStr

="Provider=Microsoft.Jet.OLEDB.4.0;Data

Source=";connStr

+=@"C:\Users\t420s\Documents\student.mdb";Console.WriteLine("當(dāng)前連接字符串為:\n"+

connStr+"\n");conn.ConnectionString

=

connStr;conn.Open();if

(conn.State

==

ConnectionState.Open){Console.WriteLine("連接成功");OleDbCommand

cmd

=

newOleDbCommand();cmd.CommandType

=

CommandType.Text;cmd.Connection

=

conn;cmd.CommandText

="select

*

fromstu";OleDbDataReader

rd

=

cmd.ExecuteReader();stringstrOutput;23while

(rd.Read()){strOutput=string.Format("編號:{0},姓

名:{1},

學(xué)號:{2},班級:{3},性別:{4},平均分:{5}",rd.GetInt32(0),

rd.GetString(1),rd.GetInt32(2),

rd.GetDouble(3),

rd.GetString(4),rd.GetDouble(5));Console.WriteLine(strOutput);}rd.Close();}conn.Close();if

(conn.State==ConnectionState.Closed)Console.WriteLine("關(guān)閉成功");}catch

(Exception

ex){Console.WriteLine("連接失敗,原因是:\n"+

ex.Message);}訪問數(shù)據(jù)庫的基本步驟24建立數(shù)據(jù)庫連接對象(Connection對象);打開數(shù)據(jù)庫連接(Connection對象的Open方法);建立數(shù)據(jù)庫命令對象,指定命令對象所使用的連接對象(Command);指定命令對象的命令屬性(CommandText屬性);執(zhí)行命令(Command的方法,如

ExecuteReader);操作返回結(jié)果(對ReaderData對象進(jìn)行讀取);關(guān)閉數(shù)據(jù)庫連接。關(guān)于DataReader的兩個(gè)測試DataReader對象不可返回:將OleDbDataReader進(jìn)行兩遍的while循環(huán)更新數(shù)據(jù)庫中某一行的其中一項(xiàng)數(shù)值可以執(zhí)行?cmd.CommandText

=

"update

stu

set

score=10

where

ID=1";怎么解釋:“DataReader返回的數(shù)據(jù)是只讀,不支持更新操作”?DataReader對象,只有Get方法,沒有Set方法。25DataSet與DataAdapter26數(shù)據(jù)集DataSet是非連接的、位于內(nèi)存中的高速數(shù)據(jù)緩存區(qū)。DataSet主要依靠DataAdapter類來與數(shù)據(jù)庫通信??梢园袲ataSet看成是內(nèi)存中的數(shù)據(jù)庫,一般使用DataAdapter類的Fill方法來填充DataSet。調(diào)用DataAdapter類的Fill方法時(shí),該方法將隱式調(diào)用數(shù)據(jù)連接的Open()方法,填充完畢將自動關(guān)閉數(shù)據(jù)連接。如果在調(diào)用該方法之前已經(jīng)顯式調(diào)用了conn的Open方法,則在Fill方法調(diào)用以后不會自動調(diào)用conn的Close方法來關(guān)閉數(shù)據(jù)連接。DataAdapter常用方法27方法說明Fill用于添加或刷新數(shù)據(jù)集,以便使數(shù)據(jù)集與數(shù)據(jù)源匹配FillSchema用于在數(shù)據(jù)集中添加DataTable,以便與數(shù)據(jù)源的結(jié)構(gòu)匹配Update將DataSet里面的數(shù)值存儲到數(shù)據(jù)庫服務(wù)器上DataAdapter常用方法28Fill方法:該方法有多種重載格式,其主要作用是從數(shù)據(jù)源中提取數(shù)據(jù)以填充數(shù)據(jù)集。下面是常用調(diào)用格式:Fill(數(shù)據(jù)集對象):當(dāng)數(shù)據(jù)集中只有一個(gè)數(shù)據(jù)表時(shí)Fill(數(shù)據(jù)集對象,數(shù)據(jù)集中的表名):填充指定的表,當(dāng)數(shù)據(jù)集中有多個(gè)表時(shí)aDataAdapter.Fill(aDataSet);aDataAdapter.Fill(aDataSet,”aDataTable”);aDataAdapter.Fill(aDataTable);DataAdapter常用方法29Update方法:該方法用于更新數(shù)據(jù)源,下面是常用的調(diào)用格式:Update(數(shù)據(jù)集對象):對數(shù)據(jù)集中指定的數(shù)據(jù)表所作的任何修改全部更新到數(shù)據(jù)源,該方法常用于數(shù)據(jù)集中只有一個(gè)數(shù)據(jù)表時(shí)。Update(數(shù)據(jù)集對象,數(shù)據(jù)表):該方法用于數(shù)據(jù)集中有多個(gè)數(shù)據(jù)表時(shí)。DataAdapter常用屬性:SelectCommand、InsertCommand、UpdateCommand、DeleteCommand這四個(gè)屬性分用來指向四個(gè)命令對象(對數(shù)據(jù)源查詢、插入、更新、刪除時(shí)將用到),是DataAdapter用來填充數(shù)據(jù)集和更新數(shù)據(jù)源的主要依據(jù)。OLEDBDataAdapter用于訪問任何由OleDb提供程序公開的數(shù)據(jù)源用作數(shù)據(jù)集和數(shù)據(jù)源之間的橋梁,以便檢索和存儲數(shù)據(jù)與OleDbConnection

和OleDbCommand

一起使用以提高性能DataAdapter

類的屬性和方法屬性說明InsertCommand表示用于在數(shù)據(jù)庫中插入新記錄的SQL

語句或存儲過程UpdateCommand表示用于在數(shù)據(jù)庫中更新記錄的SQL

語句或存儲過程DeleteCommand表示用于從數(shù)據(jù)庫中刪除記錄的SQL

語句或存儲過程SelectCommand表示用于從數(shù)據(jù)庫中選擇記錄的SQL

語句或存儲過程事件說明RowUpdated在對數(shù)據(jù)源執(zhí)行更新命令之后的過程中激發(fā)該事件RowUpdating在對數(shù)據(jù)源執(zhí)行命令更新之前的過程中激發(fā)該事件3031//

Create

the

Insert,

Update

and

Deletecommands.adapter.InsertCommand

=new

OleDbCommand("INSERT

INTO

Customers(CustomerID,

CompanyName)

"

+

"VALUES

(?,

?)");adapter.UpdateCommand

=new

OleDbCommand("UPDATE

Customers

SETCustomerID

=

?,

CompanyName

=

?

"

+

"WHERE

CustomerID

=

?");adapter.DeleteCommand

=

new

OleDbCommand("DELETE

FROM

CustomersWHERE

CustomerID

=

?");//

Create

theparameters.adapter.InsertCommand.Parameters.Add("@CustomerID",

leDbType.Char,

5,"CustomerID");adapter.InsertCommand.Parameters.Add("@CompanyName",OleDbType.VarChar,

40,

"CompanyName");adapter.UpdateCommand.Parameters.Add("@oldCustomerID",OleDbType.Char,

5,

"CustomerID").SourceVersion=DataRowVersion.Original;adapter.DeleteCommand.Parameters.Add("@CustomerID",OleDbType.Char,

5,"CustomerID").SourceVersion

=

DataRowVersion.Original;DataSet對象及其使用數(shù)據(jù)集的概念從數(shù)據(jù)源獲得的數(shù)據(jù)的一個(gè)本地副本可以作為非連接數(shù)據(jù)的關(guān)系視圖數(shù)據(jù)集的結(jié)構(gòu)數(shù)據(jù)表(DataTable):描述DataSet中的表數(shù)據(jù)關(guān)系(DataRelation):表示不同表中兩列數(shù)據(jù)間的關(guān)系約束(Constraint):定義了在DataTable中添加和操作數(shù)據(jù)要遵守的規(guī)則。數(shù)據(jù)行(DataRow)數(shù)據(jù)列(DataColumn)32DataSetDataSet對象是存儲從數(shù)據(jù)庫檢索到的據(jù)的對象是零個(gè)或多個(gè)表對象的集合,這些表對象由數(shù)據(jù)行和列、約束和有

成關(guān)表中數(shù)據(jù)關(guān)系的信息組不直接與數(shù)據(jù)庫交互數(shù)既可容納數(shù)據(jù)庫的數(shù)據(jù),也可以容納非數(shù)據(jù)庫的數(shù)據(jù)源DataSet

類的層次結(jié)構(gòu)DataSetDataColumnCollectionDataRowCollectionDataColumnDataRowDataTableCollectionDataTable數(shù)據(jù)集的工作原理客戶端服務(wù)器數(shù)據(jù)集將數(shù)據(jù)發(fā)送到數(shù)據(jù)集客戶端修改數(shù)據(jù)集將數(shù)據(jù)集傳遞給客戶端將修改后的數(shù)據(jù)集傳遞給服務(wù)器客戶端向服務(wù)器請求數(shù)據(jù)DataSet對象及其使用35DataSet對象包含數(shù)據(jù)表的集合Tables(元素類型為DataTable),而DataTable對象包含數(shù)據(jù)行的集合Rows(元素類型為DataRow)、數(shù)據(jù)列的集合

Columns(元素類型為DataColumn)。表的常用方法和屬性:NewRow(),其作用是利用當(dāng)前表的模式產(chǎn)生一新行Rows,表示數(shù)據(jù)行的集合。該集合對象包含對表中所有記錄的引用(通過下標(biāo)引用,如Rows[0]代表第一行記錄)DataSet對象及其使用36Rows對象的常用屬性:Count:記錄條數(shù)ADD(數(shù)據(jù)行)往數(shù)合中添加新的記錄數(shù)據(jù)行(DataRow),代表表中的一行記錄。通過列名稱下標(biāo)或位置下標(biāo)可訪問數(shù)據(jù)行列(字段)數(shù)據(jù)行的常用方法和屬性:Delete()刪除當(dāng)前行BeginEdit()開始編輯當(dāng)前行EndEdit()結(jié)束編輯當(dāng)前行使用C#代碼創(chuàng)建數(shù)據(jù)集數(shù)據(jù)集實(shí)例是由DataSet

構(gòu)造函數(shù)創(chuàng)建的數(shù)據(jù)集的名稱是可選的,不需要指定如果沒有指定名稱,則以默認(rèn)名稱NewDataSet創(chuàng)建數(shù)據(jù)集屬性說明DataSetName用于獲取或設(shè)置當(dāng)前數(shù)據(jù)集的名稱Tables用于檢索數(shù)據(jù)集中包含的表集合方法說明Clear清除數(shù)據(jù)集中包含的所有表的所有行HasChanges返回一個(gè)布爾值,指示數(shù)據(jù)集是否更改了DataSet

empDS

=

new

DataSet("EmployeeDetails");DataTable、DataColumn和DataRow數(shù)據(jù)集中的數(shù)據(jù)以DataTable

對象的形式存儲DataTable

類屬于System.Data

命名空間屬性說明CoDataColumnConstraints

表示特定DataTable的約束集合DPrimaryKey

DataColumnRowsDataRowHasChanges返回一個(gè)布爾值,指示數(shù)據(jù)集是否更改了lumns

表示列的集合或DataTable包含的方法 說明AcceptChanges

提交對該表所做的所有修改ataSet

表示DataTable所屬的數(shù)據(jù)集NewRow

添加新的DataRow表示作為DataTable主鍵的字段或事件ColumnChanged表示行修的改說明集該合列或中的值時(shí)激發(fā)該事件DataTable包含的RowChanged

成功編輯行后激發(fā)該事件RowDeleted成功刪除行時(shí)激發(fā)該事件DataTable

objStudentTable

=

new

DataTable("Students");創(chuàng)建DataTable

對象的實(shí)例DataSet

studentDS

=

new

DataSet();DataTable

objStudentTable

=

studentDS.Tables.Add("Students");創(chuàng)建DataTable

的實(shí)例,然后將其添加到數(shù)據(jù)集的Tables

集合中DataTable、DataColumn和DataRowRejectChanges屬性

說明Item 表示DataRow的指定列中存儲的值RowState 表示行的當(dāng)前狀態(tài)Table

表示用于創(chuàng)建DataRow的DataTable的名稱方法

說明AcceptChanges

用于提交自上次調(diào)用了AcceptChanges之后對該行所做的所有修改Delete Deletes

theDataRow用于刪除DataRow

用于拒絕自上次調(diào)用了AcceptChanges之后對DataRow所做的所有修改DataRow對象表示DataTable中的實(shí)際數(shù)據(jù)//定義表結(jié)構(gòu),為Students表添加學(xué)號、姓名、分?jǐn)?shù)三列

DataTable

objStudentTable=new

DataTable("Students");DataColumn

objStudentNumber

=

new

DataColumn();objStudentNumber.DataType

=

objStudentTable.Columns.Add("

StudentNo

",typeof(string));objStudentNumber.AllowDBNull

=

false;objStudentNumber.DefaultValue

=

25;objStudentTable.Columns.Add("StudentName",typeof(string));objStudentTable.Columns.Add("StudentMarks",typeof(Double));//向表中填充數(shù)據(jù)

DataRow

objStudentRow;objStudentRow=

objStudentTable.NewRow();objStudentRow["StudentNo"]=101;objStudentRow[“StudentName”]=“張三";objStudentRow["StudentMarks"]=55;objStudentTable.Rows.Add(objStudentRow);在DataTable

對象中新建DataRow添加行使用DataTable的NewRow方法實(shí)例化一個(gè)DataRow對象用數(shù)據(jù)填充列調(diào)用DataRows的Add方法,傳遞DataRow對象DataRow

row1 =pubsDataSet.Tables["Titles"].NewRow();row1["title"]

=

"New

Book";row1["type"]

=

"business";pubsDataSet.Tables["Titles"].Rows.Add(row1);編輯行調(diào)用行的BeginEdit方法更改列中的數(shù)據(jù)調(diào)用EndEdit或CancelEdit接受或拒絕更改changeDataRow.BeginEdit(

);changeDataRow["Title"]

=

changeDataRow["Title"].ToString()

+

"1";changeDataRow.EndEdit(

);刪除數(shù)據(jù)Remove方法DataRow

deleteDataRow

=

pubsDataSet.Tables["Titles"].Rows[0];pubsDataSet.Tables["Titles"].Rows.Remove

(deleteDataRow);Delete方法只在數(shù)據(jù)集中做刪除行的標(biāo)記,可以調(diào)用

AcceptChanges或RejectChanges方法確認(rèn)或撤消刪除DataRow

deleteDataRow

=

pubsDataSet.Tables["Titles"].Rows[0];deleteDataRow.Delete();將數(shù)據(jù)更新到數(shù)據(jù)源調(diào)用DataAdapter的Update方法SqlCommand

insertTitlesCommand

=

new

SqlCommand("Insert

titles

(title_id,

title,

type)values

(@title_id,@title,@type)");insertTitlesCommand.Parameters.Add("@title_id",

SqlDbType.VarChar,6,

"title_id");insertTitlesCommand.Parameters.Add("@title",SqlDbType.VarChar,80,

"title");insertTitlesCommand.Parameters.Add("@type",

SqlDbType.Char,

12,

"type");titlesSQLDataAdapter.InsertCommand

=insertTitlesCommand;titlesSQLDataAdapter.Update(pubsDataSet,

"titles");實(shí)例2:利用DataSet對象操作數(shù)據(jù)庫44掌握數(shù)據(jù)集的常用方法掌握對數(shù)據(jù)表進(jìn)行添加、編輯、刪除記錄行的各種操作DataSet對象讀取OleDbDataAdapter充當(dāng)DataSet和數(shù)據(jù)源之間的橋梁,用于檢索和保存數(shù)據(jù):使用Fill

將數(shù)據(jù)從數(shù)據(jù)源加載到DataSet

中使用Update將DataSet中所作的更改發(fā)回?cái)?shù)據(jù)源OleDbDataAdapter

da

=

new

OleDbDataAdapter();da.SelectCommand=cmd;DataSet

result=new

DataSet(

);da.Fill(result,"student");在DataSet

result中返回了一個(gè)名為“student”的表:45DataSet對象讀取46OleDbConnection

conn

=

new

OleDbConnection();string

connStr="Provider=Microsoft.Jet.OLEDB.4.0;Data

Source=";connStr+=@"C:\Users\t420s\Documents\student.mdb";Console.WriteLine("當(dāng)前連接字符串為:\n"+connStr+"\n");conn.ConnectionString=connStr;string

strSelectQuery

=

"select

*

from

stu";OleDbCommand

cmd

=

new

OleDbCommand(strSelectQuery,

conn);OleDbDataAdapter

da

=

new

OleDbDataAdapter();da.SelectCommand=cmd;DataSet

result=new

DataSet(

);da.Fill(result,"student");string

strOutput;for(int

i=0;i<result.Tables["student"].Rows.Count;i++){strOutput=string.Format(“編號:{0},姓名:{1},學(xué)號:{2},班級:{3},性別:{4},平均分:{5}",result.Tables[0].Rows[i]["id"],

result.Tables[0].Rows[i]["stu_name"],result.Tables[0].Rows[i]["stu_id"],

result.Tables[0].Rows[i]["stu_class"],result.Tables[0].Rows[i]["stu_sex"],

result.Tables[0].Rows[i]["score"]);Console.WriteLine(strOutput);}DataSet對象插入得到數(shù)據(jù)表創(chuàng)建OleDbDataAdapter的InsertCommandOleDbCommandBuilder

cb

=newOleDbCommandBuilder(da);da.InsertCommand

=

cb.GetInsertCommand();賦行的各項(xiàng)值,插入新行DataRow

row1=result.Tables["student"].NewRow();row1["stu_name"]="新增加姓名";row1["stu_id"]

=

"88888888";row1["stu_class"]

=

"

溫馨提示

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

最新文檔

評論

0/150

提交評論