我有两个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);
}
我试图通过实现如下的简单逻辑来解决这个问题:
从第一个数据库的一个表中读取所有内容。
接下来,将它们全部插入到另一个数据库的下一个表中。
此代码段从第一个数据库“ TableEmployee ”中读取所有列:“名称”和“地址” > Employee.sqlite “并插入第二个数据库” Customer.sqlite “的表” TableCustomer “,它们也有相同的两列” Name < / em>“和”地址“。
如果有多个表,该怎么做?有没有其他方法可以解决这个问题?求救!
答案 0 :(得分:0)
经过大量研究,我成功地解决了这个问题:
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 ”。