我編碼在C#中對Access數據庫獲取Access數據庫中的所有表...按照位置
我可以用下面讓所有的表在我訪問數據庫:
DataTable dataTbl;
DataView dvCols;
DataRowView drvCols;
...
dataTbl = m_connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
new Object[] { null, null, null, "TABLE" });
dvCols = new DataView(dataTbl);
for (int j = 0; j < dvCols.Count; j++)
{
drvCols = dvCols[j];
tableName = drvCols.Row["TABLE_NAME"].ToString();
// ...
}
的問題是,這種代碼獲取按字母順序排列的表名。現在,如果我在讀從特定的表列,我可以通過順序位置使用
dvCols.Sort = "ORDINAL_POSITION";
排序然而,這是不可能的表格,實在是沒有順序位置,我猜。我的表有關係,例如表A與表B有一對多的關係,它與表C有一對多的關係,所以我需要按照這個順序得到表名,例如, A然後B然後C.
有沒有辦法做到這一點?
我需要以某種方式檢查主鍵和外鍵,並自己弄清楚這些信息嗎?
感謝您的回答。我在下面的帖子中實現了一個爲我工作的解決方案。 「關係中的週期」究竟意味着什麼?你能提供一個例子嗎?我不太喜歡數據庫。 – mash
經典示例是僱員表,其中包含一個管理員列,該列是僱員表的外鍵。理論上,循環當然也可以涉及幾個表格(A涉及B涉及與C有關的A)。 – phoog