?? ado.net學(xué)習(xí)紀(jì)錄 (二).txt
字號(hào):
ADO.net學(xué)習(xí)紀(jì)錄 (二)
作者: xjtufb 發(fā)表時(shí)間: 2003-7-31 11:19:31
--------------------------------------------------------------------------------
更新數(shù)據(jù)源的方法
1,Command對(duì)象
更新需要的屬性:
Connection 包含數(shù)據(jù)倉庫連接的細(xì)節(jié)
CommandText 要運(yùn)行的命令
CommandType 命令的類型 Sql字符或存儲(chǔ)過程的名稱
Text 表示文本字符串sql
TableDirect 表示表名
StoredProcedure 表示存儲(chǔ)過程的名稱
Parameters Parameters對(duì)象的一個(gè)集合
2,DataAdapter對(duì)象
注意DataAdapter和Command的區(qū)別?
>> Command主要用于運(yùn)行命令
>> DataAdapter主要用于為多個(gè)命令提供一個(gè)存儲(chǔ)空間,在數(shù)據(jù)倉庫和DataSet之間提供 雙向交互。
哦,一個(gè)Command對(duì)象只能處理查詢,添加,刪除,修改中的一種
因此 DataAdapter用四個(gè)屬性存儲(chǔ)四種Command對(duì)象
屬性如下 SelectCommand,UpdateCommand,InsertCommand,DeleteCommand
3,CommandBuilder對(duì)象
OleDbCommandBuilder objBuilder
objBuilder = new OleDbCommandBuilder(DataAdapter)
表示告訴命令生成器可以在哪兒取到SelectCommand,以建立其他的命令.
DataAdapter.UpdateCommand = objBuilder.GetUpdateCommand();
DataAdapter.InsertCommand = objBuilder.GetInsertCommand();
DataAdapter.DeleteCommand = objBuilder.GetDeleteCommand();
注意在這種情況下,SelectCommand必需帶有一個(gè)主鍵字段
4.DataAdapter.Update()
DataAdapter.Update(DataSet,"Tablesname");
例如,以下代碼確保首先處理表中已刪除的行,然后處理已更新的行,然后處理已插入的行。
[C#]
DataTable updTable = custDS.Tables["Customers"];
// First process deletes.
custDA.Update(updTable.Select(null, null, DataViewRowState.Deleted));
// Next process updates.
custDA.Update(updTable.Select(null, null, DataViewRowState.ModifiedCurrent));
// Finally, process inserts.
custDA.Update(updTable.Select(null, null, DataViewRowState.Added));
其中DataViewRowState數(shù)據(jù)視圖的操作屬性 包括Deleted, ModifiedCurrent,Added,Unchanged等
至此,更新數(shù)據(jù)倉庫工作完成。
[2003-05-28]
使用存儲(chǔ)過程
存儲(chǔ)過程類似于代碼中的函數(shù),它存儲(chǔ)在數(shù)據(jù)服務(wù)器上并有一個(gè)名稱。
為什么要使用存儲(chǔ)過程?
1.龐大復(fù)雜的SQL語句影響程序代碼的閱讀
2.由數(shù)據(jù)庫服務(wù)器來處理的存儲(chǔ)過程比直接使用SQL語句更快,效率更高
要使用存儲(chǔ)過程,需要注意的是CommandType設(shè)為StoredProccess CommandText為存儲(chǔ)過程的名稱
eg: objCmd.CommandText = "[Sales by Category]";
objCmd.CommandType = CommandType.StoreProcedure;
使用XML
由于ADO.net設(shè)計(jì)時(shí)就考慮到了XML,它處理XML數(shù)據(jù)就像是這些數(shù)據(jù)來自于一個(gè)數(shù)據(jù)庫
1,寫入XML文件
objAdapter.Fill(objDataSet,"Employees"); //填充結(jié)果集
objDataSet.WriteXml(Server.MapPath("Employees.xml"));//寫入到xml文件
注意兩點(diǎn):
1,首先用到了DataSet的WriteXml()方法,從DataSet中提取信息并格式化xml
2,Server.MapPath()表示生成文件路徑,指向當(dāng)前應(yīng)用程序的目錄
2,讀取XML文件
objDataSet.ReadXml(Server.MapPath("Employees.xml"));
3,將Xml轉(zhuǎn)換為字符串
string strXML,strSchema
strXML = objDataSet.GetXml()
strSchema = objDataSet.GetXmlSchema()
4,一旦XML讀入到DataSet中他就同從數(shù)據(jù)庫中讀入的數(shù)據(jù)沒有任何區(qū)別,也可以進(jìn)行前面任何的
操作,最終只要將操作的結(jié)果集DataSet寫入至XML或者數(shù)據(jù)庫都可以
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -