在Windows Forms App中将数据从一个OleDb数据库复制到另一个

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Windows Forms App中将数据从一个OleDb数据库复制到另一个相关的知识,希望对你有一定的参考价值。

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

到目前为止,我已成功使用适当的连接字符串连接到两个数据库。我还将源数据库中的所有数据读入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)将是要读取的数据库的所需列的名称。如果您需要对此示例进行进一步说明,请与我们联系

以上是关于在Windows Forms App中将数据从一个OleDb数据库复制到另一个的主要内容,如果未能解决你的问题,请参考以下文章

如何在非托管类中将 Tick 事件添加到 System::windows::Forms::Timer

在 Windows 10 App 中将图片从图片库填充到 ListView

无法从Win Forms C#app连接到远程Node.js Socket.IO服务器

如何在 C# 中将文本提取/插入到 RTF 字符串中

如何在 Xamarin Forms 中将日期、日期时间和时间保存到 SQLite 数据库?

Xamarin.Forms App 将数据返回给调用 App