gpt4 book ai didi

c# - 在 C# 上使用参数从一个数据库复制另一个数据库中的行

转载 作者:行者123 更新时间:2023-11-29 08:09:58 27 4
gpt4 key购买 nike

我正在尝试制作一个程序,将数据从一个表复制到另一服务器中的另一个表。

问题是表不完全相同。假设这些是我的表格:

服务器A:表A(第1列,第2列,第3列)

服务器 B:表B(第1列,第2列)

我想从 ServerA.TableA 复制到 ServerB.TableB。

我的代码:

Truncate_table(ConnectionB, "TableB");

MySqlCommand CmdB = new MySqlCommand("", ConnectionB);
CmdB.CommandText = "INSERT INTO ServerB.TableB (col1, col2) VALUES (@val1, @val2)";

using (MySqlCommand cmd = new MySqlCommand("", ConnectionA))
{
cmd.CommandText = "SELECT col2, col3 FROM ServerA.TableA";

using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
CmdB.Parameters.AddWithValue("@val1", reader.GetInt32(0));
CmdB.Parameters.AddWithValue("@val2", reader.GetInt32(1));
CmdB.ExecuteNonQuery();
}

}
}

但是,它给出错误,提示“参数'@val1'已被定义。”。

你们能给我一些建议吗?

有没有更有效的方法来做到这一点?但我想在 C# 中执行此操作。

最佳答案

尝试添加一次参数,然后在 while 循环中设置这些参数的值:

MySqlCommand CmdB = new MySqlCommand("", ConnectionB);
CmdB.CommandText = "INSERT INTO ServerB.TableB (col1, col2) VALUES (@val1, @val2)";
CmdB.Parameters.AddWithValue("@val1", 0); // Default values
CmdB.Parameters.AddWithValue("@val2", 0);

using (MySqlCommand cmd = new MySqlCommand("", ConnectionA))
{
cmd.CommandText = "SELECT col2, col3 FROM ServerA.TableA";

using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
CmdB.Parameters["@val1"].Value = reader.GetInt32(0));
CmdB.Parameters["@val2"].Value = reader.GetInt32(1));
CmdB.ExecuteNonQuery();
}

}
}

另外,我可能是错的,但我相信您需要使用 ? 来分隔 MySql 的参数。如果您有任何其他问题,可以尝试将 @val1@val2 替换为 ?val1?val2

关于c# - 在 C# 上使用参数从一个数据库复制另一个数据库中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21818392/

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