Xamarin.android sqlite net无法在MonoDroid应用程序中创建数据库

Xamarin.android sqlite net无法在MonoDroid应用程序中创建数据库,xamarin.android,sqlite-net,Xamarin.android,Sqlite Net,我启动了Xamarin Studio 4.0.3,并为MonoDroid应用程序创建了一个新的解决方案。我的目标是2.3版或更高版本。我将Sqlite.cs包含在Sqlite net(最新版本)项目中。我确保在项目中有对Mono.Data.SQLite的引用。然后,在默认MainActivity的OnCreate中,我尝试使用自述文件中显示的代码建立数据库连接: string path = Android.OS.Environment.DataDirectory.ToString(); str

我启动了Xamarin Studio 4.0.3,并为MonoDroid应用程序创建了一个新的解决方案。我的目标是2.3版或更高版本。我将Sqlite.cs包含在Sqlite net(最新版本)项目中。我确保在项目中有对Mono.Data.SQLite的引用。然后,在默认MainActivity的OnCreate中,我尝试使用自述文件中显示的代码建立数据库连接:

string path = Android.OS.Environment.DataDirectory.ToString();

string dbname = path + "/" + "test.db3";
var db = new SQLiteConnection(dbname, SQLiteOpenFlags.Create|SQLiteOpenFlags.ReadWrite ,true);

但是,它总是失败,出现一个异常,表示它无法打开数据库。若我遵循Greg Shackles示例并使用SqliteDbHelper方法,那个么它是有效的,但我想了解我做错了什么,sqlite网络连接方法不起作用。我觉得我错过了一些简单的事情。我也尝试过向SQLiteConnection()传递一个文件名,但失败后,我添加了OpenFlags以查看这是否是问题所在。

我刚刚发现,显然您应该使用个人文件夹,而不是数据库文件夹:

string folder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
var db = new SQLiteConnection(Path.Combine(folder, "mydb.db"));

呃,我想这是一件很简单很确定的事情。然而,这是网站上的第一个答案。我甚至在一些邮件列表上发现了这个问题。非常感谢您的回答。我在使用个人文件夹时遇到的问题是,每次更新应用程序时,以前的数据库都会被删除,因此所有数据都会丢失。将数据存储在SD卡上似乎是一个更现实的解决方案,因为我认为用户不希望在升级时重新输入数据。除非有办法阻止从个人数据库中删除数据库,否则请让我知道。