在 Windows 窗体应用中将数据从一个 OleDb 数据库复制到另一个数据库



我正在尝试创建一个数据传输实用程序,将数据从一个 OleDb 数据库的表传输到另一个 OleDb 数据库的表。(可以是 SQL Server 或 MySql 或 Access Database)。

到目前为止,我已经使用适当的连接字符串成功地连接到两个数据库。我还将所有数据从源数据库读取到 OleDbDataReader 中。下面是代码。

OleDbDataReader reader;
string query = "SELECT * FROM " + stable.Text;   // text box with source table name
cmd.CommandText = query;
try
{
reader = cmd.ExecuteReader();
}
catch(Exception ex)
{
MessageBox.Show(ex, "Error");
return;
}

我卡在上面的部分是如何将数据从 OleDbDataReader 写入另一个数据库中的表(假设表具有类似的列)。源和数据表将由用户在运行时输入。

我知道对于SqlConnection,我们可以使用SqlBulkCopy来复制所有内容而无需列映射。但是我找不到太多关于如何在OleDbConnection中做到这一点的信息。

我对SQL和 ado.net 相当陌生,所以如果这是一个愚蠢简单的问题,我真的很抱歉。我希望我已经提供了有关我的问题的足够信息,但是如果我错过了某些内容或问题中没有意义,请告诉我。 任何帮助将不胜感激。谢谢。

使用读取器遍历每一行并复制值。您必须指定列名,因为我不知道它们是什么,或者您的表上存在多少列名。这应该引导你朝着正确的方向前进。

//Connection to the database to be inserted
OleDbCommand insertCmd = new OleDbCommand("Your connection");
//Read each row and execute new query. The Reader was established previously in your code.
while (reader.Read())
{
//Create your query. Each item in the first parenthesis is the column name in your table. 
//Each item in the second set of parenthesis is a parameter to be specified later.  
insertCmd.CommandText =  "INSERT INTO table_name (column1Name, column2Name, column3Name, ...) VALUES(@column1Name, @column2Name, @column2Name, ...)";
//Add the parameter values. The values are pulled from the reader that's reading your "Read" database
insertCmd.Parameters.AddWithValue("@column1Name", reader["column1Name"]);
insertCmd.Parameters.AddWithValue("@column2Name", reader["column2Name"]);
//...Other columns you may have
//Execute Query
insertCmd.ExecuteNonQuery();
}

如果表之间的列名不同,则读取器(列#Name)将是要读取的数据库的所需列的名称。如果您需要进一步解释此示例,请告诉我

最新更新