Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用c#代码将多址数据库合并成一个大数据库_C#_Winforms_Ms Access - Fatal编程技术网

用c#代码将多址数据库合并成一个大数据库

用c#代码将多址数据库合并成一个大数据库,c#,winforms,ms-access,C#,Winforms,Ms Access,我有多个相同的Access 2007数据库(accdb文件),我想用c#代码用windows窗体将它们合并成一个,但我不知道怎么做,因为我是c语言的初学者# 数据库是相同的,但我想将所有数据保存在一个数据库中,因为所有数据表只有一行或两行,因为我使用access form对来自我所在大学不同学生的调查问卷进行访问,他们向我发送了他们的答案,所以我必须逐个打开所有文件,我想改进windows form应用程序,因为我将获取一些结果根据答案。我建议您采取以下步骤: 创建一个包含单个表的数据库以保存最

我有多个相同的Access 2007数据库(accdb文件),我想用c#代码用windows窗体将它们合并成一个,但我不知道怎么做,因为我是c语言的初学者#
数据库是相同的,但我想将所有数据保存在一个数据库中,因为所有数据表只有一行或两行,因为我使用access form对来自我所在大学不同学生的调查问卷进行访问,他们向我发送了他们的答案,所以我必须逐个打开所有文件,我想改进windows form应用程序,因为我将获取一些结果根据答案。

我建议您采取以下步骤:

  • 创建一个包含单个表的数据库以保存最终结果。该表应具有与单个文件完全相同的结构,但有一个主键字段—数据库文件的路径,或每行的某些其他唯一值(可以使用“自动编号”字段生成)。在任何情况下,都可能需要为数据库路径添加一列,特别是在需要防止多次重新读取同一数据库文件时
  • 使用OleDb提供程序打开到最终数据库的ADO.NET连接。这需要a)创建
    OleDbConnection
    对象,b)创建在连接上运行的
    OleDbCommand
    对象,c)将命令对象的
    CommandText
    设置为SQL语句,以及d)执行命令
  • 您的SQL语句可能如下所示:

    INSERT INTO desttable (pkfield, field1, field2 ...)
    SELECT field1, field2
    FROM sourcetable
    
    sourcetable
    也可以是不同数据库中的表,如下所示:

    INSERT INTO desttable (pkfield, field1, field2 ...)
    SELECT field1, field2
    FROM sourcetable IN path\to\mdb
    
    因此,对于每个路径,可以通过每次替换适当的路径来构建SQL语句

  • 如果要迭代特定文件夹中的所有mdb文件,可以在
    System.IO
    命名空间中使用
    Directory
    类的
    EnumerateFiles
    方法。或者,您可以使用
    Windows.Forms
    命名空间中的
    OpenFileDialog
    打开一个对话框
  • 一旦你弄清楚了你想看到什么样的UI,绑定到这个数据应该是很简单的

  • 如果数据库相同,那个么你们为什么需要合并它们呢?数据库是相同的,但我想把所有的数据都保存在一个数据库中,因为所有的数据表只有一行或两行,因为我使用access form对来自我所在大学不同学生的问卷进行访问,他们向我发送了他们的答案,所以我必须逐个打开所有文件,我想创建一个windows form应用程序因为我将从答案中得到一些结果。(1)我们谈论的是多少个数据库文件?(2) 每个文件中有多少个表?100多个数据库文件,每个文件中有一个表。如果您觉得使用Access更方便,则使用Access UI几乎可以轻松完成此操作。这是否足够?或者您需要更多关于绑定到UI的细节吗?如果足够,请单击答案旁边的复选标记,将问题标记为已回答。insert的qurey在MS-ACCESS中非常有效,但在c中不起作用。我在c中的文本框中显示查询,并在MS-ACCESS和works中复制查询。请用不起作用的c代码更新您的问题。