首页 > 解决方案 > 为什么我的 SQLite 数据库被认为是只读的?

问题描述

我收到以下错误消息:

在此处输入图像描述

...当我尝试像这样写入我的 SQLite 数据库时:

private async Task InsertMapRecord(string mapName, string mapNotes)
{
    path = folder.Path;
    connStr = string.Format(connStrBase, path);
    try
    {
        SqliteConnection conn = new SqliteConnection(connStr);
        String query = "INSERT INTO CartographerMain " +
            "(MapName, MapNotes) " +
            "VALUES (@MapName, @MapNotes)";

        using (SqliteCommand cmd = new SqliteCommand(query, conn))
        {
            cmd.Parameters.AddWithValue("@MapName", mapName);
            cmd.Parameters.AddWithValue("@MapNotes", mapNotes);
            await conn.OpenAsync();
            int result = await cmd.ExecuteNonQueryAsync();

            if (result < 0)
            {
                MessageDialog dialog = new MessageDialog("Error inserting data into CartographerMain");
                await dialog.ShowAsync();
            }
        }
    }
    catch (SqliteException sqlex)
    {
        string sqlExcMsg = string.Format("{0} Inner Exception: {1} Stack Trace: {2}", sqlex.Message,    sqlex.InnerException, sqlex.StackTrace);
        MessageDialog dialog = new MessageDialog(sqlExcMsg, "InsertMapRecord");
        await dialog.ShowAsync();
    }
}

因此,根据此处的一些信息,我检查了运行应用程序的文件夹。它被标记为只读,如下所示:

在此处输入图像描述

...所以我将其更改为 NOT readonly,应用更改并保存它:

在此处输入图像描述

然而,我仍然得到与上述代码相同的错误消息。我还缺少什么?

更新

在下面的评论中回答 Selvin 的问题,我正在存储 db 文件,如下所示:

StorageFolder folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
string connStrBase = @"Data source={0}\Cartographer.db";
string connStr = string.Empty;
string path = string.Empty;

. . .

private async Task InsertMapRecord(string mapName, string mapNotes)
{
    path = folder.Path;
    connStr = string.Format(connStrBase, path);
    try
    {
        SqliteConnection conn = new SqliteConnection(connStr);
    . . .

我将数据库添加到项目中,将其复制到输出目录属性设置为“如果较新则复制”

db 文件的路径是 C:\Users\bclay\source\repos\CartographerYou\CartographerYou\Cartographer.db。我手动将其复制到那里。

标签: c#sqliteuwp

解决方案


推荐阅读