如何将数据库恢复到不同的页面?

How to recover a database to a different page?

我用 SQLite-net 创建了一个数据库,所以:

 SQLiteAsyncConnection conn = new SQLiteAsyncConnection(Path.Combine(ApplicationData.Current.LocalFolder.Path, "Database.db"), true);
 await conn.CreateTableAsync<Musei>();

          Musei musPref;
          if (muss.NumeroTel != null && muss.Descrizione!=null && muss.indirizzoEmail!= null && muss.Immagine!= null)
            {
                    musPref = new Musei
                    {
                        DidascaliaLista=muss.DidascaliaLista,
                        NomeMuseo = muss.NomeMuseo,
                        Luogopreciso = muss.Luogopreciso,
                        Descrizione = muss.Descrizione,
                        NumeroTel = muss.NumeroTel,
                        IndirizzoEmail = muss.IndirizzoEmail,
                        Immagine= muss.Immagine,
                    };
            }
  await conn.InsertAsync(musPref);

在另一个项目中,我需要恢复创建的数据库并在 ListView 中插入对象,但我不知道如何进行..

 try
      {
        StorageFile data = await ApplicationData.Current.LocalFolder.GetFileAsync("Database.db");
      }

  catch(Exception)
      {

      }

然后呢?? 我想检索上面创建的数据库并使用它,插入其中的对象 "Musei" 并将其显示在 ListView

如果要从之前创建的数据库中读取,可以执行以下操作:

// Get a connection to the database that is in the local folder.
var dbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "Database.db");
var con = new SQLiteAsyncConnection(dbPath, true);

// Get all "Musei" in the database stored in the "Musei" table.
var results = await con.QueryAsync<Musei>("SELECT * FROM Musei");

如果你只想要匹配某个字段值的Musei,例如:你只想读取特定位置"Rome"的那些,你可以这样做:

var searchLocation = "Rome"; // for example entered by the user in your UI.

// Get only the "Musei" in `searchLocation`.
var results = await con.QueryAsync<Musei>("SELECT * FROM Musei WHERE Luogopreciso ='?'", searchLocation);

如果您只查询一个 table,另一种方法是使用 LINQ 这样做:

var query = con.Table<Musei>();

// or, if looking for `searchLocation`:
var query = con.Table<Musei>().Where(m => m.Luogopreciso == "Rome");

然后您可以使用以下方法将其作为列表获取:

var result = await query.ToListAsync();

要找出哪些 table 实际存在于您打开的数据库文件中,您可以这样做:

var nTables = 0;
System.Diagnostics.Debug.WriteLine("Tables in the database");
foreach (var mapping in con.TableMappings)
{
    System.Diagnostics.Debug.WriteLine(mapping.TableName);
    nTables++;
}
System.Diagnostics.Debug.WriteLine("{0} tables in total", nTables);

并查看调试输出。