当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《C#将MSAccess数据库同步到sqlserver》经验,为你挑选了1个好方法。

我试图在C#中设置一个同步例程,以便将数据从ms访问数据库发送到sql server.MS Access不是我的选择它只是它的方式.

我能够查询MS Access数据库并获取OleDbDataReader记录集.我可能会读取每个单独的记录并将其插入到SQL Server中,但它似乎非常浪费.

有一个更好的方法吗.我知道我可以在MS Access链接到sql server并轻松执行更新,但这适用于最终用户,我不希望他们搞乱访问.

编辑: 只是看看SqlBulkCopy我认为如果我将我的结果导入DataRow []可能是答案



1> PeteT..:

我在.NET中找到了一个我很满意的解决方案.它允许我向程序中的任何用户授予对同步例程的访问权限.它涉及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.它可能不是最好的代码,但应该让任何读这个想法的人.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有