You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI应用嵌入预填充SQLite数据库(Android端)异常解决

MAUI(VS2022)嵌入预填充SQLite数据库Android端问题及临时解决方法

在VS2022开发面向Android和iOS的MAUI应用时,嵌入预填充SQLite数据库遇到Android端异常:将数据库文件放入资源并标记为embedded resource后,创建连接查询表时提示no such table found;检查发现目标路径下的数据库文件存在但大小为0字节。

经排查,采用以下临时解决方法(仅验证读取功能,暂未测试完整CRUD及iOS端):

  • 在MainPage初始化后执行一次流复制操作:
stream = FileSystem.OpenAppPackageFileAsync(Constants.DatabaseFilename).Result;
var mem1 = new MemoryStream();
stream.CopyTo(mem1); 
mem1.Seek(0, SeekOrigin.Begin);
var fs = new FileStream(Constants.DatabasePath, FileMode.OpenOrCreate);
mem1.CopyTo(fs);
mem1.Close(); 
stream.Close();
  • 相关常量定义:
public static class Constants
{
    public const string DatabaseFilename = "ngar4.db";

    public const SQLite.SQLiteOpenFlags Flags =
        // open the database in read/write mode
        SQLite.SQLiteOpenFlags.ReadWrite; //|
        // create the database if it doesn't exist
      //  SQLite.SQLiteOpenFlags.Create |
        // enable multi-threaded database access
      //  SQLite.SQLiteOpenFlags.SharedCache;

    public static string DatabasePath =>
        Path.Combine(FileSystem.AppDataDirectory, DatabaseFilename);
}

执行上述操作后,即可正常通过App.DB1 = new DatabaseManager(Constants.DatabasePath);打开数据库连接。

内容的提问来源于stack exchange,提问作者john murray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:20:06