關於DataRow和DataColumn的一點個人簡單理解

來源:互聯網
上載者:User
PS:其實這個放在這裡只是當作一個我對於自己不懂的地方所作的一個記錄而已。如果有什麼錯誤的或者不當的地方歡迎大家指正。

關於DataRow和DataColumn,其實就是DataTable的行與列,作為DataTable的兩個集合元素存在,用類似於座標系裡x與y的方法確定唯一的表值。
本來以為兩個都是同等性質的,不過無意中的問題說明了它們不是單純的差不多。
使用SQL語句建立表,但忘記了寫進內容:CREATE TABLE Testtable(ID int PRIMARY KEY,Description Char(30));然後用DataReader當然什麼都不會返回。
用VS.NET 2003的Server Explorer查看錶,並沒提示錯誤。有列,但沒有行內容,也就是說這樣的“空表”是可以存在的。那試著換一下SQL語句:CREATE TABLE Testtable;或者CREATE TABLE Testtable();都提示法錯誤。由此可見作為表的基礎是列。
又由DataReader的工作方式來看,是個以行為元素遍曆的過程,其中的資料成員是依列進行分組,輸出也就是兩個嵌套的迴圈:
foreach (DataRow i in dt.Rows)
{
foreach (DataColumn j in dt.Columns)
{
Console.Write("\t{0}",i[j]);
}
Console.WriteLine();
}
所有行都以列為結構,其實訪問其實是在訪問行,列只是制定其資料所在的位置名稱,可以抽象成這樣:
struct Row
{
Type Column_1;
Type Column_2;
...
Type Column_n;
}
由此引出了一個建立在上面的問題:行與列在表裡的添加。
1.DataRow的添加
比較常規,就是添加元素而已,可以看作是把上面的Row[]添加一個元素。
具體方法大概如下:
DataRow newRow=dt.NewRow(); //調用DataTable dt方法NewRow()聲明建立一個新行,得到一個DataRow執行個體
...
newRow["(Column Name...)"]="..."; //為DataRow寫入資料
...
dt.Rows.Add(newRow); //添加進dt
這樣就完了。
2.DataColumn的添加
似乎也簡單。事實上卻是dt裡並沒有NewColumn()這個方法。
兩種思路:
a.在SQL裡面內建,這種思路在這裡暫時不討論,有興趣的可以試一下;
b.在程式裡面找到類似的Add()方法調用;
這裡有必要說明一下DataColumn和DataColumnCollection兩個類的關係:
實際上表建立架構的是DataColumnCollection,是DataColumn的一個集合,包含一組Column對象,也就是說,要為表添加一列,需要在表架構的DataColumnCollection上調用Add()方法而不是在dt上添加作為遍曆的元素,因為列獨立出來其實也是以行->列的方式遍曆的。思路有了,於是具體實現如下:
DataColumnCollection dcc=ds.Tables["Employees"].Columns; //DataSet ds,返回DataColumnCollection對象集合
DataColumn newColumn=new DataColumn(); //建立一個新列
newColumn=dcc.Add("FullName",System.Type.GetType("System.String"),"FirstName+' '+LastName"); //向表Employees裡插入列,在這裡用的是DataColumnCollection.Add(string ColumnName,Type ColumnType,string Expression)方法插入列,這裡的Expression是指的建立的新列的值建立規則
至此,列插入結束。

作為一個小小的討論,DataRow和DataColumn這樣簡單介紹一下,希望能對大家有點協助。


相關關鍵詞:
相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。