DataTable 爲內存中的表並不是 數據庫中的表 在經過“持久化”之後 可以轉化爲數據庫中的表
– 持久化到數據庫可以使用dataAdapter.Update的方法。
創建DataTable對象的方法:
1.通過構造函數創建
無參數構造函數
DataTable table1=New DataTable();
有參數構造函數
DataTable table1=New DataTable(string tableName) ;
2. 通過DataSet獲取DataTable :
DataTable table1=DataSet.Tables[0]
DataTabletable1=DataSet.Tables[“tableName”]
3. 通過已有的DataTable的Clone()方法得到新的DataTable對象
• 新表與現有表結構相同
• 這在實際中也是常用的
DataTable table2=table1.Clone(); 克隆的只是表結構 並不包含數據
而DataTabletable2=table.Copy();是複製表一的所有內容包括結構與數據
4. 通過DataAdapter填充DataSet對象,在DataSet中自動生成一個與查詢結果集結構與記錄相同的DataTable對象
DataAdapter da=new DataAdapter();
DataSet ds=new DataSet();
DataTable的Columns屬性和Rows屬性
Columns屬性:表示DataTable對象的 DataColumn(數據列的意思)列對象的集合.
Rows屬性: 表示DataTable對象的DataRow(數據行的意思)行 對象的集合.
兩個屬性最常用的方法Add() Clear( )
兩個屬性表示數組,後面也可以加下標或行或列的名稱表示某個行或某個列
DataColumn的構造函數
DataColumn(“Name ”, 列的系統類型名 )
– Name:表示列的名稱
– 列的系統類型名:因爲DataTable是內存中的表而非數據庫中的表,因此它的DataColumn的數據類型是System數據類型。可以用以下兩種方式獲得:
• typeof(系統類型名稱) 設置 如:
DataColumn c1 = newDataColumn("id",typeof (int));
• Type.GetType(“System.類型名”) 設置
DataColumn c2 = newDataColumn("name",Type .GetType ("System.String"));
- Ordinal:返回DataColumn在DataTable對象的列集合中的位置,該屬性只讀,如果DataColumn不在DataTable對象的Column集合中,返回-1
- 設置是否允許爲空 AllowDBNull
- 設置唯一性 Unique
- 只讀屬性 ReadOnly
- 最大長度 MaxLength
- 設置爲自動增長的標識列
① AutoIncrement 是否允許自動增長
② AutoIncrementSeed 自動增長的種子(初始值)
③ AutoIncrementStep 自動增長的步長
- 設置默認值屬性 DefaultValue
創建新行:
DataRow r1 =t1.NewRow ();
• 爲行中某個列逐個賦值:
– 行對象名稱[列的索引值] =表達式;
– 行對象名稱[“列的name名”]=表達式;
DataTable的LoadDataRow 方法:
LoadDataRow(Object[] values, Boolean fAcceptChanges)
– 作用:查找和更新特定行。如果找不到任何匹配行
則使用給定值創建新行。
– 通過調用該方法可以向表中添加一整行數據,不需
要逐個字段的賦值操作。