Android Xamarin+sqlite:读取数据库时出现问题
我正在打开一个数据库文件,运行select*查询,但找不到任何对象。我有: 为SQLite在DB浏览器中创建DB,将DB文件存储在公共项目中,并使用正确的构建操作AndroidAsset/BundleResource为Droid/iOS创建资产/资源 在Droid中的公共代码和数据库服务中创建接口:Android Xamarin+sqlite:读取数据库时出现问题,android,database,visual-studio,sqlite,xamarin,Android,Database,Visual Studio,Sqlite,Xamarin,我正在打开一个数据库文件,运行select*查询,但找不到任何对象。我有: 为SQLite在DB浏览器中创建DB,将DB文件存储在公共项目中,并使用正确的构建操作AndroidAsset/BundleResource为Droid/iOS创建资产/资源 在Droid中的公共代码和数据库服务中创建接口: public SQLiteConnection CreateConnection() { var sqliteFilename = "StepsDatabase.db"; strin
public SQLiteConnection CreateConnection()
{
var sqliteFilename = "StepsDatabase.db";
string documentsDirectoryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
var path = Path.Combine(documentsDirectoryPath, sqliteFilename);
var conn = new SQLite.SQLiteConnection(path);
//conn.CreateTable<Step>();
//conn.CreateTable<SuperStep>();
return conn;
}
创建了一个调用CreateConnection的DatabaseManager,然后创建了一个来自表和空列表的select*查询。
即使在调试和检查conn变量时,它的TableMappings Count=0
PS使用sqlite net pcl NuGet安装在所有项目中
我已经在这个问题上呆了很长时间,并且在互联网上搜索过,但是没有一个对其他人有效的解决方案对我有效。请帮忙
这也是我的第一个问题,如果我做错了什么,请告诉我。您可以使用EF Core轻松访问Sqlite数据库 使用以下命令安装EFCore Sqlite软件包:
Install-Package Microsoft.EntityFrameworkCore.Sqlite
然后,您可以使用EFCore标准函数在运行时创建数据库。我从未正确打开数据库资产,只是创建了一个空文件。我现在用
var binaryReader = new BinaryReader(Android.App.Application.Context.Assets.Open(sqliteFilename))
打开资产并将其写入我最初尝试打开的文件位置。一旦我创建了连接,它就会正确地映射到我的对象,我有一个列表要使用!:: 您正在创建一个空数据库,因为您使用的路径与存储预创建数据库的位置资源/资产不匹配。如果您打算写入数据库,则需要在应用程序启动时将其复制到用户可写文件夹。我只打算从中读取。我已经检查了它创建的路径,并在设备监视器中查看,它就在那个位置。我还检查了文件.Existspath,它返回true。如果数据库不存在,SQLite将创建一个新的数据库。因此file.exists实际上可能并不有用。你需要了解如何使用android资产你有任何资源或链接吗?我读过的每一篇文章和看到的每一个例子都表明,资产将走上这条道路。非常感谢。
var binaryReader = new BinaryReader(Android.App.Application.Context.Assets.Open(sqliteFilename))