c# - 为什么我的 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# - WPF ComboBox 忽略绑定
- mule - 如何在 dataweave 中使用 Excel 作为查找
- laravel - 我如何才能像 Laravel 中的 dd() 函数一样将变量数据作为字符串获取?
- authentication - Keycloak 是否支持某种形式的中间人身份验证?
- java - CloudSDK 能否帮助使用仅在运行时才知道的 OData 实体类型?
- javascript - ChartJS 根据日期更改显示的数据?
- visual-studio - 如何使用新项目格式将文件夹的文件标记为带有通配符的嵌入式资源?
- ios - 如何让 AKSequencer 切换声音字体?
- html - 为什么我的 CSS 规则没有按预期应用?
- java - 在 or-tools 中为 MIP 编写线性表达式