gpt4 book ai didi

c# - 按顺序位置获取 Access 数据库中的所有表

转载 作者:行者123 更新时间:2023-11-30 18:02:08 26 4
gpt4 key购买 nike

我正在针对 Access 数据库使用 C# 编码...

我可以通过以下方式获取 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 具有一对多关系,表 B 与表 C 具有一对多关系,等等......所以我需要按该顺序获取表名,例如A 然后 B 然后 C。

有什么办法吗?
我是否需要以某种方式检查主键和外键并自己找出这些信息?

最佳答案

好的..明白了。我最终做了以下事情:

               dataTable_ForeignKeys = 
m_connection.GetOleDbSchemaTable(OleDbSchemaGuid.Foreign_Keys, null);

//Check if a DataTable object is initialized
if (dataTable_ForeignKeys != null)
{
// iterate and get the names
foreach (DataRow row in dataTable_ForeignKeys.Rows)
{
tableName = row["PK_TABLE_NAME"].ToString();
tblNames.Add(tableName);

获取外键关系列表。这按我需要的顺序返回了表,即首先是“父”表。如果一个表不是另一个表的“父表”,即它没有一个字段是另一个表中的外键,那么它不会被返回。我通过像在原始帖子中那样获取所有数据库表名来协调这一点。

关于c# - 按顺序位置获取 Access 数据库中的所有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8315720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com