Убедитесь, что имя таблицы точно совпадает с именем таблицы в базе данных, используя TableAttribute
:
[Table("NameOfYourTableInDb")]
public partial class Contacts
{
...
}
Кроме того, я думаю, что вы можете случайно создать новую базу данных в каталоге данных вашего приложения, что, вероятно, не то, что вам нужно, если вы развертываете только для чтения БД со своим проектом. Чтобы получить правильный путь к файлу, вам потребуется следующее
var appDb = await StorageFile.GetFileFromApplicationUriAsync(
new Uri("ms-appx:///ContactsDB.db"));
SQLiteConnection connection = new SQLiteConnection(appDb.Path);
ms-appx:///
указывает на корень каталога установки приложения.
Однако, если вам также необходимо изменить данные в базе данных, вам сначала необходимо скопировать файл БД в каталог данных приложения:
StorageFile dbFile = null;
try
{
dbFile = await ApplicationData.Current
.LocalFolder.GetFileAsync("ContactsDB.db");
}
catch (Exception)
{
//file does not exist
}
if (dbFile == null)
{
//copy db deployed with app
var appDb = await StorageFile.GetFileFromApplicationUriAsync(
new Uri("ms-appx:///ContactsDB.db"));
dbFile = await appDb.CopyAsync(
ApplicationData.Current.LocalFolder);
}
SQLiteConnection connection = new SQLiteConnection(dbFile.Path);
//same as "ContactsDB.db"
В этом случае я сначала проверяю, была ли БД еще не скопирована, а если нет, я копирую БД, доступную только для чтения, развернутую вместе с приложением, в локальное хранилище приложения, предназначенное для чтения и записи. Обратите внимание, что я мог бы также использовать "ContactsDB.db"
в качестве строки подключения напрямую, потому что это предполагает рабочий каталог ApplicationData.Current.LocalFolder
. Однако для большей ясности я использовал dbFile.Path
.