gpt4 book ai didi

c# - 使用 C# 以编程方式更新 MS Access 数据库中的链接表

转载 作者:太空狗 更新时间:2023-10-30 00:47:27 26 4
gpt4 key购买 nike

我有两个 Access 2003 数据库(fooDbbarDb)。 fooDb 中有四个表链接到 barDb 中的表。

两个问题:

  • 如何更新表内容(fooDb 中的链接表应与 barDb 中的表内容同步)
  • 如何使用 ADO.NET 将表格重新链接到不同的 barDb

我用谷歌搜索但没有得到任何有用的结果。我发现的是如何在 VB(6) 和 DAO 中完成此操作,但我需要 C# 的解决方案。

最佳答案

这是我使用 C# 重新链接 DAO 表的解决方案。

我的应用程序使用中央 MS Access 数据库和 8 个链接的实际数据库。中央数据库本地存储到我的 C# 应用程序,但该应用程序允许将 8 个数据数据库位于其他位置。启动时,我的 C# 应用会根据 app.config 设置重新链接中央数据库中的 DAO 表。

另外请注意,此数据库结构是我的应用程序最初是我移植到 VB6 的 MS Access 应用程序的结果。我目前正在将我的应用程序转换为 C#。我本可以在 VB6 或 C# 中移除 MS Access,但它是一个非常易于使用的桌面数据库解决方案。

在中央数据库中,我创建了一个名为 linkedtables 的表,其中包含三列 TableName、LinkedTableName 和 DatabaseName。

在应用程序启动时,我调用这个例程

            Common.RelinkDAOTables(Properties.Settings.Default.DRC_Data
, Properties.Settings.Default.DRC_LinkedTables
, "SELECT * FROM LinkedTables");

Default.DRC_Data - 中央 Access 数据库的当前文件夹Default.DRC_LinkedTables - 8个数据数据库的当前文件夹

这是在 C# 中实际重新链接 DAO 表的代码

        public static void RelinkDAOTables(string MDBfile, string filepath, string sql)
{
DataTable linkedTables = TableFromMDB(MDBfile, sql);

dao.DBEngine DBE = new dao.DBEngine();
dao.Database DB = DBE.OpenDatabase(MDBfile, false, false, "");
foreach (DataRow row in linkedTables.Rows)
{
dao.TableDef table = DB.TableDefs[row["Name"].ToString()];
table.Connect = string.Format(";DATABASE={0}{1} ;TABLE={2}", filepath, row["database"], row["LinkedName"]);
table.RefreshLink();
}


}

为从 Access 数据库获取数据并将其作为 DataTable 返回而编写的附加代码

        public static DataTable TableFromOleDB(string Connectstring, string Sql)
{
try
{
OleDbConnection conn = new OleDbConnection(Connectstring);
conn.Open();
OleDbCommand cmd = new OleDbCommand(Sql, conn);
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table);

return table;
}
catch (OleDbException)
{
return null;
}
}
public static DataTable TableFromMDB(string MDBfile, string Sql)
{
return TableFromOleDB(string.Format(sConnectionString, MDBfile), Sql);
}

关于c# - 使用 C# 以编程方式更新 MS Access 数据库中的链接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/625360/

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