Невозможно получить доступ к моей базе данных SQLite, так как Microsoft.Data.Sqlite 3.0.0 - PullRequest
0 голосов
/ 22 октября 2019

Я недавно обновил пакет Microsoft.Data.Sqlite NuGet с 2.2.6 до 3.0.0 в моем проекте C # UWP.

Мне удалось открыть файл базы данных без каких-либо проблем, но теперь VSверните мне следующее исключение при попытке открыть его:

Microsoft.Data.Sqlite.SqliteException: «Ошибка SQLite 14:« невозможно открыть файл базы данных ». '

только с этим кодом:

private readonly SqliteConnection db;

public SqliteHelper(string fileLocation)
{
     fileName = fileLocation;
     backupName = fileLocation.Split('.').First() + ".backup";

     db = new SqliteConnection("Filename=./" + fileLocation);
     db.Open();
} 

Кто-нибудь получил такую ​​же проблему?

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Проблема выглядит неправильно, строка подключения. Я сохранил файл базы данных в uwp LocalStorage. Мы можем использовать строку подключения «Filename = sqlite.db» непосредственно в Microsoft.Data.Sqlite 2.2.6. Но нам нужно объединить полный путь к файлу БД при обновлении до последней версии. За подробностями обращайтесь к следующему.

public static string  DbFilePath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "Sqlite.db");
public App()
{
    this.InitializeComponent();

    using (SqliteConnection db = new SqliteConnection("Filename=" + DbFilePath)) 
    {
        db.Open();
        String tableCommand = "CREATE TABLE IF NOT EXISTS MyTable (Primary_Key INTEGER PRIMARY KEY AUTOINCREMENT, Text_Entry NVARCHAR(2048) NULL)";
        SqliteCommand createTable = new SqliteCommand(tableCommand, db);
        try
        {
            createTable.ExecuteReader();
        }
        catch (SqliteException e)
        {
            //Do nothing
        }
    }
    this.Suspending += OnSuspending;
}
0 голосов
/ 22 октября 2019

Попробуйте включить true в ваш SqliteConnection конструктор.

Код:

private readonly SqliteConnection db;

public SqliteHelper(string fileLocation)
{
     fileName = fileLocation;
     backupName = fileLocation.Split('.').First() + ".backup";

     db = new SqliteConnection("Filename=./" + fileLocation, true);
     db.Open();
} 
...