2015-04-19 5 views
0

я создал базу данных с SQLite-сети так:Как восстановить базу данных на другую страницу?

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

+0

Вы хотите, чтобы (1) использовали созданную базу данных для чтения из (2) создания новой базы данных, которая является копией существующей? Пожалуйста, отредактируйте свой вопрос, чтобы добавить сведения о том, чего вы пытаетесь достичь. – Alex

+0

Добавленный спрос точный – G111

ответ

0

Если вы хотите прочитать из базы данных, которую вы создали ранее, вы можете сделать следующее :

// 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, которые соответствуют определенному значению поля, например: вы хотите только читать те, в определенном месте «Рим», вы можете сделать это так:

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

Альтернатива ве, если вы только запрашивая одну таблицу, чтобы сделать это, как это, используя 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(); 

Чтобы узнать, какие таблицы на самом деле присутствуют в ваших открытых файлах базы данных, вы можете сделать это:

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

и посмотрите на вывод отладки.

+0

У меня есть код ошибки в этом коде: 'var con = SQLiteAsyncConnection (dbPath, true);' SQLiteAsync Connection - это тип, но используется как переменная – G111

+0

Ой, забыл 'новый'. Добавлено – Alex

+0

Я получаю это исключение (исключение типа SQLite.SQLiteException произошло в App1.exe, но не было обработано в коде пользователя Дополнительная информация: нет такой таблицы: Musei) в файле SQLite.cs просто попробуйте запустить этот код: 'var result = await con.QueryAsync (" SELECT * FROM Musei "); ' – G111

Смежные вопросы