C# 将 MS Access 数据库同步到 sql server

标签 c# sql-server ms-access

我正在尝试在 C# 中设置一个同步例程,以将数据从 ms access 数据库发送到 sql server。 MS Access 不是我的选择,它就是这样。

我能够查询 MS Access 数据库并获取 OleDbDataReader 记录集。我可能会读取每个单独的记录并将其插入到 SQL Server 中,但这看起来太浪费了。

有没有更好的方法来做到这一点。我知道我可以在链接到 sql server 的 MS Access 中完成此操作并轻松执行更新,但这是针对最终用户的,我不希望他们弄乱 Access 。

编辑: 只要看看 SqlBulkCopy,我认为如果我将结果放入 DataRow[] 中,这可能就是答案

最佳答案

我在 .NET 中找到了一个我非常满意的解决方案。它允许我将对同步例程的 Access 权限授予我程序中的任何用户。它涉及SQLBulkCopy类。

private static void BulkCopyAccessToSQLServer
        (CommandType commandType, string sql, string destinationTable)
    {
        using (DataTable dt = new DataTable())
        {
            using (OleDbConnection conn = new OleDbConnection(Settings.Default.CurriculumConnectionString))
            using (OleDbCommand cmd = new OleDbCommand(sql, conn))
            using (OleDbDataAdapter adapter = new OleDbDataAdapter(cmd))
            {
                cmd.CommandType = commandType;
                cmd.Connection.Open();
                adapter.SelectCommand.CommandTimeout = 240;
                adapter.Fill(dt);
                adapter.Dispose();
            }

            using (SqlConnection conn2 = new SqlConnection(Settings.Default.qlsdat_extensionsConnectionString))
            {
                conn2.Open();
                using (SqlBulkCopy copy = new SqlBulkCopy(conn2))
                {
                    copy.DestinationTableName = destinationTable;
                    copy.BatchSize = 1000;
                    copy.BulkCopyTimeout = 240;
                    copy.WriteToServer(dt);
                    copy.NotifyAfter = 1000;
                }
            }
        }
    }

基本上,这会将数据从 MS Access 放入 DataTable,然后使用第二个连接 conn2 和 SqlBulkCopy 类将数据从该 DataTable 发送到 SQL Server。它可能不是最好的代码,但应该能让任何阅读此代码的人了解它。

关于C# 将 MS Access 数据库同步到 sql server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1770684/

相关文章:

sql - 查找任何列中具有空值的所有行

c# - 同时将多行插入数据库

ms-access - 在 MS Access 2007 中创建 View

c# - 如何从mysql数据库显示图像到datagridview

c# - 船舶海事AIS信息API

mysql - SQL 查询多个表 Newby

sql-server - 如何获取 SQL Server 中存储过程返回的列列表?

sql - Access SQL 日期格式

c# - CS1061 : Compilation Error Message

c# - Xml 解析器不工作