SQLite - 无法打开数据库文件

Posted

技术标签:

【中文标题】SQLite - 无法打开数据库文件【英文标题】:SQLite - Could not open database file 【发布时间】:2014-11-11 00:47:57 【问题描述】:

我正在编写 Xamarin android 应用程序,但在尝试创建 SQLite 数据库时出现错误。

这是我的代码:

string applicationFolderPath = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "CanFindLocation");
string databaseFileName = System.IO.Path.Combine(applicationFolderPath, "CanFindLocation.db");
SQLite.SQLite3.Config(SQLite.SQLite3.ConfigOption.Serialized);
var db = new SQLiteConnection (databaseFileName);

这是我得到的错误:

SQLite.SQLiteException: Could not open database file: /data/data/com.xamarin.docs.android.mapsandlocationdemo2/files/CanFindLocation/CanFindLocation.db (CannotOpen)

我在另一个 Xamarin 应用程序中运行相同的代码,想知道异常是否与包名称有关?

提前致谢

【问题讨论】:

点击你的数据库可见右上角菜单 Sql lite Browser 选择它 【参考方案1】:

您提供给 SQLite 的路径文件夹路径是否存在?如果您尚未创建 CanFindLocation 文件夹,则打开与该路径的连接将失败。

试试:

string applicationFolderPath = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "CanFindLocation");

// Create the folder path.
System.IO.Directory.CreateDirectory(applicationFolderPath);

string databaseFileName = System.IO.Path.Combine(applicationFolderPath, "CanFindLocation.db");
SQLite.SQLite3.Config(SQLite.SQLite3.ConfigOption.Serialized);
var db = new SQLiteConnection (databaseFileName);

【讨论】:

谢谢,希望我能多次投票,花了几个小时才找到这篇文章! 我得到同样的错误,...但是 SQLite.SQLite3 没有“配置”方法,为什么?我正在使用“sqlite-net-pcl (1.4.118)”和“Xamarin.Forms(3.1.0)” 我发现有时在调试时,路径神奇地不存在,然后我再次运行它就可以了。打开和关闭 搞笑的是,我刚刚通过 Google 重新发现了这个问题,并用我自己的答案解决了我自己的问题,但一开始并没有意识到……Doh!【参考方案2】:

我的问题与在初始化期间添加了“SQLiteOpenFlags.Create”选项有关。

SQLiteAsyncConnection database = new SQLiteAsyncConnection(dbPath, SQLiteOpenFlags.Create);

【讨论】:

以上是关于SQLite - 无法打开数据库文件的主要内容,如果未能解决你的问题,请参考以下文章

SQLite 无法打开数据库文件:Laravel + Windows

Sqlite 错误无法打开数据库文件

Flask OperationalError:无法使用 sqlite3 打开数据库文件

sqlite 错误 14 [无法打开数据库文件] iphone xcode

无法打开在 Android 中创建的 SQLite DB(文件已加密或不是数据库)

SQLite无法在频繁的“SELECT”查询中打开数据库文件(代码14)