繁体   English   中英

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

[英]Merge two sqlite database in Windows Metro Apps C#

我有两个sqlite数据库,想要合并多个表的所有内容。 我遵循了这篇文章: 合并两个SQLite数据库文件(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”“Employee.sqlite”,并插入到表第二个数据库的“TableCustomer”“Customer.sqlite”,这也有相同的两列“,“ 地址名称 “和” 地址

如果有多个表,该怎么办? 还有其他解决方法吗? 请帮助!

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

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

此代码段将所有从数据库表“TableEmployee”数据库“Customer.sqlite”“Employee.sqlite”到餐桌“TableEmployee”的DATAS。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM