c# - 在 Windows Metro Apps C# 中合并两个 sqlite 数据库

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

我有两个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. 接下来,将它们全部插入到另一个数据库的下一个表中。

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

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

最佳答案

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

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);
    }

此代码片段将数据库“Employee.sqlite”的表“TableEmployee”中的所有数据复制到数据库的表“TableEmployee” “Customer.sqlite”。

关于c# - 在 Windows Metro Apps C# 中合并两个 sqlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30240317/

相关文章:

c# - 混淆变量被覆盖

c# - 用于 C# asp.net 的分析/性能分析的免费或廉价选项?

c# - 具有相同格式的字符串未被识别为有效日期时间

javascript - NodeJS、Windows、wmic 标准输入

python - SQLite NOT NULL 约束不适用于 INSERT OR IGNORE

node.js - 在 Etherpad Lite 中迁移大型 SQLite 数据库的最佳方法

c# - C# 中的探查器?

Windows Azure 上托管的 asp.net mvc 3 中的 Windows 身份验证?

如果将主机添加到 daemon.json,Windows Docker 守护进程会崩溃

sqlite - 如何确定 SQLite 索引是否唯一? (使用 SQL)