关于使用iboxdb的一些疑问

一学修行 发布于 2016/04/23 13:10
阅读 89
收藏 0

@iBoxDB 你好,想跟你请教个如下几个问题:

1、如何设定一个数据库的密码,防止他人打开数据库

2、在使用iboxdb中,哪些对象是必须要释放的。

3、我想写一个helper类帮我完成一些基本的db操作,请问new DB ()的对象能否反复使用,还是每次操作的时候都要构造一个DB包装类开始CRUD操作。

加载中
0
iBoxDB
iBoxDB
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().

iBoxDB
iBoxDB
回复 @一学修行 : ensureTable 在应用程序初始化中调用,一般是在 Listener 在初始化事件中调用。 insert()是在运行期间使用,如果没有创建表就使用表,跟普通数据库一样会抛出异常。
一学修行
一学修行
在insert对象前,必须ensureTable吗?如果不ensureTable就直接insert会出现什么情况?
0
一学修行
一学修行
感谢您的答复,追加疑问:autobox使用后需要释放吗???
iBoxDB
iBoxDB
回复 @一学修行 : Database.close()时会调用IBoxRecycler.close(), 还有IO.close()。如果是默认的文件IO,在非正常退出时,取决于操作系统对没关闭的文件的处理,一般情况下,没什么影响。可以创建多个new DB(x),但参数x地址不能相同。
一学修行
一学修行
回复 @iBoxDB : 如果应用程序非正常退出而没有来及释放Database,会出现什么情况?是内存溢出还是连接占用?一个数据库能同时用多个DB打开吗?
iBoxDB
iBoxDB
AutoBox不需要释放,只有Box需要在运行期间释放。Database在应用程序结束前释放
返回顶部
顶部