我正在打开一个数据库文件,并运行 select * 查询,但没有找到任何对象。我有:
- 在 DB浏览器中为SQLite创建了一个数据库,将数据库文件存储在公共项目中,以及具有适当构建操作的Droid/iOS资产/资源(AndroidAsset/BundleResource(
-
在通用代码中创建接口,在 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; }
(我已经尝试过带和没有.创建表格,正如我所看到的,这是另一个问题的可能解决方案(
- 为数据库中的两个表创建了 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;
}
}
}
- 创建了一个调用 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 标准函数在运行时创建数据库。