我正在使用Visual Studio创建一个WPF应用程序,并希望在项目“资产”文件夹中存储一个数据库,以便使应用程序完全自包含。
我在外部创建了数据库(没有使用迁移或我见过的等效编码结构),并试图通过类似于我用来访问也存储在“资产”文件夹Assets\data\database.db
中的图像的路径访问数据库,但当我尝试访问数据库时,程序会抛出一个错误,说它找不到。
数据库访问权限
namespace Project
{
public class LoadDb
{
public LoadDb()
{
ReadDatabase();
}
void ReadDatabase()
{
using (SqliteConnection conn = new SqliteConnection(@"Data Source=..\Assets\data\database.db"))
{
conn.Open();
SqliteCommand command = new SqliteCommand("Select * from Data", conn);
SqliteDataReader reader = command.ExecuteReader();
var dataList = new List<KeyValuePair<int, string>>();
while (reader.Read())
{
dataList.Add(new KeyValuePair<int, string>(reader.GetInt32(reader.GetOrdinal("dataId")), reader.GetString(reader.GetOrdinal("Name"))));
}
reader.Close();
conn.Close();
}
}
}
}
更改@"Data Source=C:\(full path)\Assets\data\database.db"
确实有效,但是该路径取决于应用程序的位置,我不认为这是我想要的。
我对WPF和C#非常陌生,所以一直在学习各种教程和论坛,但我找不到任何类似于我想要的东西,我见过C:\ProgramData\
中的存储,但(除非我想错了)这不会是一个独立的应用程序?
----编辑----
这是VisualStudio中项目命名空间内的文件结构的屏幕截图。
1条答案
按热度按时间ryhaxcpt1#
如果将
Assets
文件夹放在应用程序 *.exe文件附近,则以下代码将修复此问题。(已测试-它连接到数据库。)