Xamarin + sqlite:读取数据库时遇到问题



我正在打开一个数据库文件,并运行 select * 查询,但没有找到任何对象。我有:

  1. 在 DB浏览器中为SQLite创建了一个数据库,将数据库文件存储在公共项目中,以及具有适当构建操作的Droid/iOS资产/资源(AndroidAsset/BundleResource(
  2. 在通用代码中创建接口,在 Droid 中创建数据库服务:

    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;
    }
    

    (我已经尝试过带和没有.创建表格,正如我所看到的,这是另一个问题的可能解决方案(

  3. 为数据库中的两个表创建了 C# mdoel
namespace StepsDB
{
[Table("Step")]
public class Step
{
[PrimaryKey, AutoIncrement, Unique, Column("stepID")]
public int stepID
{
get;
set;
}
[NotNull, Column("name")]
public string name
{
get;
set;
}
[NotNull, Column("superStep")]
public int superStep
{
get;
set;
}
[Column("videoLocation")]
public string videoLocation
{
get;
set;
}
[Column("uploader")]
public string uploader
{
get;
set;
}
[Column("uploaderIG")]
public string uploaderIG
{
get;
set;
}
}
}
  1. 创建了一个调用 CreateConnection(( 的数据库管理器,然后从两个表和空列表中创建一个选择 * 查询。

即使我调试并检查"conn"变量,它的表映射计数 = 0。

PS 使用 sqlite-net-pcl NuGet 安装在所有项目中。

我已经坚持了很长时间,并且已经搜索了互联网,但没有对其他人有用的解决方案对我有用。请帮忙!

这也是我的第一个问题,所以如果我做错了什么,请告诉我。

我从来没有正确打开我的数据库资产,只创建了一个空文件。我现在使用

var binaryReader = new BinaryReader(Android.App.Application.Context.Assets.Open(sqliteFilename))

以打开资产并将其写入我最初尝试打开的文件位置。创建连接后,它会正确映射到我的对象,并且我有一个列表可以使用!:) :)

可以使用 EF Core 轻松访问 Sqlite 数据库。

使用此命令安装 EFCore Sqlite 软件包:

Install-Package Microsoft.EntityFrameworkCore.Sqlite

然后,可以使用 EFCore 标准函数在运行时创建数据库。

最新更新