c# - 将表从一个数据库复制到同一服务器上的另一个数据库

标签 c# mysql winforms

由于服务器需要每个数据库的连接,所以我在 SO 中找到的答案根本不起作用。 对于某些表,我必须在复制行之前进行一些计算,但有些表我可以复制整个表。最后,这是我编写的程序的自动化。

Oldcn 是旧数据库的连接,Newcn 是新数据库的连接。

对于我可以复制整个表格,我在下面编写了此过程。

是否有更好的快捷方式来完成这项工作? (它在后台运行)

    private string[] CopyTva(MySqlConnection Oldcn, MySqlConnection Newcn, string[] res, DoWorkEventArgs we,string msg)
    {
        int counter = int.Parse(res[1]);
        MySqlCommand cmd = new MySqlCommand("SELECT * FROM tvaval", Oldcn);
        MySqlCommand cmd1 = new MySqlCommand("INSERT INTO tvaval (id,tvavalue,cr_user,cr_date,up_user,up_date) VALUES (@id,@tvavalue,@cr_user,@cr_date,@up_user,@up_date)", Newcn);
        MySqlDataReader rd = null;
        try
        {
            rd = cmd.ExecuteReader();
            while (rd.Read())
            {
                cmd1.Parameters.AddWithValue("@id", rd["id"].ToString());
                //bla bla same as above
                try
                {
                    cmd1.ExecuteNonQuery();
                }
                catch (MySqlException e)
                {
                    rd.Dispose();
                    res[2] = "Erreur:TVA " + e.Message.ToString();
                    return res;
                }
                ++counter;
                bgw.ReportProgress((counter * 100) / DbTotalRow,msg);
                cmd1.Parameters.Clear();
            }
            rd.Dispose();
        }
        catch (MySqlException e)
        {
            res[2] = "Erreur:TVA " + e.Message.ToString();
            return res;
        }
        res[0] = "1";res[1] = counter.ToString();res[2] = ""; 
        return res;
    }

最佳答案

MySQL 不需要每个数据库都有单独的连接。连接具有默认数据库,但您可以在表名称之前显式指定数据库名称,这将覆盖默认值。因此,您可以通过单个查询来完成此操作:

INSERT INTO newdb.tvaval 
SELECT * FROM olddb.tvaval

关于c# - 将表从一个数据库复制到同一服务器上的另一个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35636017/

相关文章:

c# - 处理 UserControl 中异常的正确方法

c# - 如何将 DataGridViewColumn 单元格设置为不可选择?

c# - MongoDB - 使用 C# 驱动程序按日期和时间搜索

C# 无法从类访问属性

c# - 从另一个线程获取控件的属性

c# - ListView 和文件输出的问题

c# - .NET 是否为我提供了 2008 年 12 月 29 日的错误周数?

php - 基本数据表 Ajax 配置不起作用

mysql - 在具有内连接的位置找不到列

mysql - 使用 JOIN 在多个表上自由搜索