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
相关产品推荐
相关产品推荐

