




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 青島遠(yuǎn)洋船員職業(yè)學(xué)院《食品生物技術(shù)概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 貴州文化旅游職業(yè)學(xué)院《全媒體節(jié)目制作與包裝實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025屆湖北省十一校高三上學(xué)期第一次聯(lián)考(一模)歷史試卷
- 梧州醫(yī)學(xué)高等??茖W(xué)?!恫枞~機(jī)械學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南陽醫(yī)學(xué)高等專科學(xué)?!秶量臻g規(guī)劃導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 蘭州工業(yè)學(xué)院《軌道交通通信技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 桂林生命與健康職業(yè)技術(shù)學(xué)院《分子生物學(xué)實(shí)驗(yàn)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶文化藝術(shù)職業(yè)學(xué)院《信息設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢鐵路職業(yè)技術(shù)學(xué)院《中國古代文學(xué)史(四)》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖北工業(yè)大學(xué)《工程計(jì)量與計(jì)價(jià)(路橋)》2023-2024學(xué)年第二學(xué)期期末試卷
- 委托調(diào)解民事糾紛協(xié)議書合同
- 林學(xué)概論完整版本
- GB/T 44458.3-2024運(yùn)動用眼部和面部保護(hù)第3部分:水面游泳用眼鏡的要求和試驗(yàn)方法
- 中醫(yī)四季養(yǎng)生之道課件
- 消防安全教育主題班會課件
- 《2024版 CSCO胃癌診療指南》解讀
- 情感表達(dá) 課件 2024-2025學(xué)年人教版(2024)初中美術(shù)七年級上冊
- 公交駕駛員心理素質(zhì)培訓(xùn)考核試卷
- 2024年上半年教師資格證《初中道德與法治》真題及答案
- 區(qū)塊鏈應(yīng)用操作員技能大賽考試題庫大全-上(單選題)
- 2024屆中國航空發(fā)動機(jī)集團(tuán)限公司校園招聘高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
評論
0/150
提交評論