c# - ASP.NET CORE Web 应用程序抛出 SQLiteException:无法打开数据库文件
问题描述
我有一个 SQLite 数据库,并将其上传到我的服务器 [托管在 azure 中]。但是当我尝试访问它时,它会抛出SQLiteException: unable to open database file
.
我的连接字符串是这样的 -
string connectionString = "Data Source=https:\\mywebsite.azurewebsites.net\\DB\\persondb.db; Version=3"
我也试过这个 -
string connectionString = "Data Source=~/DB/persondb.db; Version=3";
这是我的完整方法的代码 -
public static List<PersonDetails> GetPersons()
{
// string connectionString = "Data Source=https:\\mywebsite.com\\DB\\persondb.db; Version=3";
string connectionString = "Data Source=~/DB/persondb.db; Version=3";
using (IDbConnection cnn = new SQLiteConnection(connectionString))
{
var output = cnn.Query<PersonDetails>
("SELECT * FROM persons",
new DynamicParameters());
return output.ToList();
}
}
我该如何解决这个问题?
解决方案
请参阅关于 SQLite
SQLite 是一个嵌入式 SQL 数据库引擎。与大多数其他 SQL 数据库不同,SQLite 没有单独的服务器进程。SQLite 直接读写普通磁盘文件。
您可以在 ASP.NET Web 项目中使用以下代码:
string path = Server.MapPath("~/DB");
string connectionString = $"Data Source={path}/demo.db; Version=3";
using (var con = new SQLiteConnection(connectionString))
{
con.Open();
var cmd = new SQLiteCommand("SELECT SQLITE_VERSION()", con);
return cmd.ExecuteScalar().ToString();
}
代码Server.MapPath("~/DB")
将在您的项目中找到文件夹的物理路径DB
,然后连接字符串应该可以工作。
推荐阅读
- cuda - 在 CUDA 的设备代码中测量内核运行时间
- c# - DateTime 默认值 ASP.net core
- javascript - ReactNative:函数在 FlatList 中自动调用两次
- android - FirebaseRecyclerAdapter() : 适配器为空
- r - 如何使用 cmd 和日志文件在任务计划程序中调试此计划的 .bat 任务?
- angular - Angular 8,如何从外部服务器加载模块/组件
- ios - 如何在 AudioKit 输出中动态更改播放器
- azure - Snowflake - 调用“CREATE NOTIFICATION INTEGRATION”会产生神秘错误
- c# - 在 JSON 类型不匹配时引发自定义异常 ASP.NET Core
- javascript - 如果域相同,则在现有选项卡中打开的电子邮件链接