SQLite - 无法打开数据库文件

时间:2014-09-17 05:21:34

标签: android exception sqlite xamarin android-sqlite

我正在编写一个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应用程序中使用相同的代码,并且想知道该异常是否与包的名称有关?

提前致谢

2 个答案:

答案 0 :(得分:14)

您提供给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);

答案 1 :(得分:0)

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

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