很多情形下我們需要知道表的主鍵是什么。在ADO.Net中提供了DataTable可以映射數(shù)據(jù)庫的表。于是便可以利用DataTable的屬性PRimaryKey,它是DataColumn[] 類型是一個(gè)數(shù)組。我們可以使用如下的代碼
DataColumn[] cols;
cols = Table.PrimaryKey;
//注意不是cols是DataColumn數(shù)組,不是DataColumn變量。這樣做主要是為了處理聯(lián)合主鍵的問題。
for(int i = 0; i < cols.Length; i++)
{
MessageBox.Show(cols[i].ColumnName);
}
按理這個(gè)問題就已經(jīng)解決了,但是cols.Length卻是0。原來在默認(rèn)的情況下填充DataTable時(shí)并沒有從數(shù)據(jù)庫中取的主鍵的信息。如何獲得主鍵呢?經(jīng)過研究發(fā)現(xiàn)在填充Dataset的時(shí)候可以使用DataAdapter的MissingSchemaAction屬性幫助我們解決這個(gè)問題,于是有如下的代碼:
//使用DataAdapter填充DataTable
dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
dataadapter.Fill(Table);
DataColumn[] cols;
cols = Table.PrimaryKey;
//注意不是cols是DataColumn數(shù)組,不是DataColumn變量。這樣做主要是為了處理聯(lián)合主鍵的問題。
for(int i = 0; i < cols.Length; i++)
{
MessageBox.Show(cols[i].ColumnName);
}
這樣我們便可以如愿以償了。MissingSchemaAction屬性是確定現(xiàn)有Dataset(或DataTable)架構(gòu)與傳入數(shù)據(jù)不匹配時(shí)需要執(zhí)行的操作。MissingSchemaAction.AddWithKey是枚舉值,它的作用是添加必需的列和主鍵信息以完成架構(gòu),利用它用戶可以在每個(gè) DataTable上顯式設(shè)置主鍵約束。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注