开发者社区> 问答> 正文

关于使用iboxdb的一些疑问:报错 

@iBoxDB 你好,想跟你请教个如下几个问题:
1、如何设定一个数据库的密码,防止他人打开数据库
2、在使用iboxdb中,哪些对象是必须要释放的。
3、我想写一个helper类帮我完成一些基本的db操作,请问new DB ()的对象能否反复使用,还是每次操作的时候都要构造一个DB包装类开始CRUD操作。

展开
收起
kun坤 2020-06-08 16:11:18 673 0
1 条回答
写回答
取消 提交回答
    1. iboxdb不支持加密,一般在应用程序中加密数据后再存入数据库中。 另一种方法是重写IO类的Write(...) Read(...),例:

    https://github.com/iboxdb/...IO/EncryptDatabaseConfig.cs 

    public class ApplicationServer extends LocalDatabaseServer { protected DatabaseConfig BuildDatabaseConfig(long address) { return new EncryptDatabaseConfig(); } } Database appdb = (new ApplicationServer()).getInstance(..);
    2. Box 对象必须释放,一般放到try内,  try(Box box = auto.cube()){ ... }.  DB()在程序结束前close()就可以了,也可以 AutoBox.getDatabase().close().
    3. 一般使用的是从 DB()对象方法 open()取得的AutoBox,AutoBox可以重复使用,不需要多次open(). ######回复 @一学修行 : ensureTable 在应用程序初始化中调用,一般是在 Listener 在初始化事件中调用。 insert()是在运行期间使用,如果没有创建表就使用表,跟普通数据库一样会抛出异常。######在insert对象前,必须ensureTable吗?如果不ensureTable就直接insert会出现什么情况?######感谢您的答复,追加疑问:autobox使用后需要释放吗???######回复 @一学修行 : Database.close()时会调用IBoxRecycler.close(), 还有IO.close()。如果是默认的文件IO,在非正常退出时,取决于操作系统对没关闭的文件的处理,一般情况下,没什么影响。可以创建多个new DB(x),但参数x地址不能相同。######回复 @iBoxDB : 如果应用程序非正常退出而没有来及释放Database,会出现什么情况?是内存溢出还是连接占用?一个数据库能同时用多个DB打开吗?######AutoBox不需要释放,只有Box需要在运行期间释放。Database在应用程序结束前释放

    2020-06-08 16:12:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Android插件化-从入门到"放弃" 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载