淺談DataSet 的用法
DataSet是ADO.NET開發人員為方便資料處理開發出來的,是資料的集合,是為解決DataReader的缺陷設計的,DataReader資料處理速度快,但它是隻讀的, 而且一旦移到下一行,就不能檢視上一行的資料,DataSet則可以自由移動指標。DataSet的資料是與資料庫斷開的。DataSet還可用於多層應用程式中,如果應用程式執行在中間層的業務物件中來訪問資料庫,則業務物件需將離線資料結構傳遞給客戶應用程式。
DataSet的功能:瀏覽、排序、搜尋、過濾、處理分級資料、快取更改等。還可以與XML資料互換。DataSet中可包括多個DataTable,可將多個查詢結構存到一個DataSet中,方便操作,而DataTable中又包括多個DataRow、DataColumn,可通過這些DataRow、DataColumn來檢視、操作其中的資料,而需將操作結果返回給資料庫的話,則可以呼叫DataAdapter的Update方法。
DataSet的操作:
DataTable dt=new DataTable("newTable");
ds.Tables.Add(dt);
DataTable dt=ds.Tables.Add("newTable");
上述兩種方法都可以在DataSet中新增一個DataTable,看需要而進行選擇。新增DataTable後,需向其中新增行和列。
DataTable dt=ds.Tables.Add("newTables");
DataColumn col=dt.Columns.Add("newColumn",typeof(int));
col.AllowDBNull=false;
col.MaxLength=4;
col.Unique=true;
上述程式碼向DataSet中的DataTable中新增名為”newColumn”,型別為int且不為空,最大長度為4和唯一性為真的列。
這段程式碼是繼續上面程式碼的,為一個DataTable中新增一個主鍵列,主鍵列是一個資料組,如有多個主鍵,只需在陣列中新增一個列即可。如下:
新增外來鍵:
fk=new ForeignKeyConstraint(ds.Tables["Customers"].Columns["CustomerID"],ds.Tables["Orders"].Columns["CustomerID"]);
ds.Tables["Orders"].Constraints.Add(fk);
//上述程式碼假如已經為Cusomers表和Orders建立了主鍵,此句為新增外來鍵約束。
上述是根據Customers表和Orders表的CustomerID來建立約束。
下面介紹修改DataRow中的內容:
if(dr==null)
else
{
dr.BeginEdit();
dr["CompanyName"]="newValue";
dr["ContactName"]="newValue2";
dr.EndEdit();
}
//上面程式碼通過Row集合的Find方法來在DataTable中的行進行定位,找到"ANTON"行,再修改"ANTON"行中CompanyName列和ContactName列的值。通過BeginEdit和EndEdit來快取對行的修改,還可呼叫 CancelEdit為取消修改。
判斷某列是否為空值:
if(dr.IsNull("ContactName");
..
else
dr["ContactName"]=DBNull.Value
//這裡判斷ContactName列是否為空,如果不是則為其賦空值,呵,很無厘頭的做法,這裡只為演示為列賦空值的做法。
if(dr.IsNull("ContactName");
..
else
dr["ContactName"]=DBNull.Value
//這裡判斷ContactName列是否為空,如果不是則為其賦空值,呵,很無厘頭的做法,這裡只為演示為列賦空值的做法。
刪除DataRow:
有兩種方法可以刪除DataRow,Delete方法和Remove方法和RemoveAt方法。其區別是Delete方法實際上不是從DataTable中刪除掉一行,而是將其標誌為刪除,僅僅是做個記號,而Remove方法則是真正的從DataRow中刪除一行,RemoveAt方法是根本行的索引來刪除。列:
ds.Tables["table"].Remove(dr);
或
ds.Tables["table"].Remove(index);
//dr 為"a"所在的行,查出後將其刪除,index為 "a"所在的索引號。
相關文章
- 淺談promise用法Promise
- LogMiner 用法淺談
- 淺談Invoke 和 BegionInvoke的用法
- 【小白學PyTorch】3 淺談Dataset和DataloaderPyTorch
- asp.net---Dataset的用法ASP.NET
- 淺談Golang中select的用法Golang
- 淺談python中的xpath用法Python
- 淺談Vue-router的部分高階用法Vue
- 淺談 Spring 框架註解的用法分析Spring框架
- 由 sort 中 key 的用法淺談 pythonPython
- 淺談vue中provide和inject 用法VueIDE
- 談談Oracle interMedia的用法Oracle
- 淺淺談ReduxRedux
- 淺析MySQL replace into 的用法MySql
- 淺談JavaScript中的thisJavaScript
- 淺淺淺談JavaScript作用域JavaScript
- 談談ThreadStatic屬性用法thread
- Celery淺談
- 淺談flutterFlutter
- 淺談JMM
- 淺談反射反射
- 淺談mockMock
- 淺談SYNPROXY
- 淺談Disruptor
- 淺談IHttpHandlerHTTP
- 淺談 PromisePromise
- 淺談PWA
- 淺談vuexVue
- 淺談JavaScriptJavaScript
- 淺談RMQMQ
- 淺談Zilliqa
- 淺談RxJavaRxJava
- 淺談NginxNginx
- 淺談 JavaScriptCoreJavaScript
- 淺談MVPMVP
- 淺談BitMap
- Jquery淺談jQuery
- 淺談CopyOnWriteArraySet