【问题标题】:Merge two sqlite database in Windows Metro Apps C#在 Windows Metro Apps C# 中合并两个 sqlite 数据库
【发布时间】:2015-05-14 14:46:11
【问题描述】:

我有两个 sqlite 数据库,想合并多个表的所有内容。我关注了这篇文章:Merging two SQLite database files (C# .NET) 但这在 C# Metro 应用程序/Windows 8.1/Windows Phone 8.1 应用程序中不起作用。我尝试了以下代码:

SQLiteAsyncConnection connection1 = new SQLiteAsyncConnection("Employee.sqlite");
SQLiteAsyncConnection connection2 = new SQLiteAsyncConnection("Customer.sqlite"); 

var result = await connection1.QueryAsync<TableEmployee>("Select Name, Address FROM TableEmployee");

        foreach (var item in result)
        {
            var EmployeeList = new List<TableEmployee>()
        {
            new TableEmployee()
            {
                Name = item.Name,
                Address = item.Address
            }
        };
            await connection2.InsertAllAsync(EmployeeList);
        }

我试图通过实现一个简单的逻辑来解决这个问题:

  1. 从第一个数据库的一个表中读取所有内容。

  2. 接下来,将它们全部插入到另一个数据库的下一个表中。

这段代码 sn-p 从第一个数据库的表“TableEmployee”中读取所有列:“Name”和“Address”” Employee.sqlite”并插入到第二个数据库“Customer.sqlite”的表“TableCustomer”中,该数据库也有相同的两列“姓名”和“地址”。

如果有多个表,怎么办?有没有其他方法可以解决这个问题?请帮忙!

【问题讨论】:

    标签: c# windows sqlite windows-phone-8.1 microsoft-metro


    【解决方案1】:

    经过大量研究,我成功解决了这个问题:

    SQLiteAsyncConnection connection1 = new SQLiteAsyncConnection("Employee.sqlite");
    SQLiteAsyncConnection connection2 = new SQLiteAsyncConnection("Customer.sqlite"); 
    
    public async void MergeDatabase()
        {
            string test1 = ApplicationData.Current.LocalFolder.Path + "\\Employee.sqlite";
            string test2 = ApplicationData.Current.LocalFolder.Path + "\\Customer.sqlite";
            await connection1.ExecuteAsync("ATTACH DATABASE '" + test1 + "' AS db1;");
            await connection1.ExecuteAsync("ATTACH DATABASE '" + test2 + "' AS db2;");
            string query = "INSERT INTO db2.TableEmployee ("
                  + "Name, Address) "
                  + "SELECT Name, Address "
                  + "FROM db1.TableEmployee";
            await connection1.ExecuteAsync(query);
        }
    

    这段代码 sn-p 将数据库 "Employee.sqlite" 的表 "TableEmployee" 中的所有数据复制到表 "TableEmployee"数据库“Customer.sqlite”。

    【讨论】:

      猜你喜欢
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 2011-12-08
      • 1970-01-01
      相关资源
      最近更新 更多