当前位置: 代码迷 >> Oracle开发 >> Oracle Berkeley DB 读取数据 DB_NOTFOUND异常
  详细解决方案

Oracle Berkeley DB 读取数据 DB_NOTFOUND异常

热度:341   发布时间:2016-04-24 07:18:55.0
Oracle Berkeley DB 读取数据 DB_NOTFOUND错误
打开数据库,可以成功:
btreeDBConfig = new BTreeDatabaseConfig();
btreeDBConfig.Duplicates = DuplicatesPolicy.SORTED;
btreeDBConfig.Creation = CreatePolicy.IF_NEEDED; //如果不存在数据库就创建
btreeDBConfig.PageSize = 4 * 1024;//页大小
btreeDBConfig.CacheSize = new CacheInfo(0, 1024 * 1024 * 80, 0);//缓存大小
btreeDB = BTreeDatabase.Open("c:\\db\\bdb.db", btreeDBConfig);

写数据,可以成功:
int id = 1;
string data = "hello world";
DatabaseEntry k = new DatabaseEntry();
DatabaseEntry d = new DatabaseEntry();
k.Data = BitConverter.GetBytes(id);
d.Data = ASCIIEncoding.ASCII.GetBytes(data);
btreeDB.Put(k, d);

// 读数据,如果在程序运行时,执行写,然后执行读,可以成功;
// 但是,如果写数据完成后,把程序关了,然后再重新运行程序,打开数据库,读数据,
// 就会失败了,请高手指点一下哪里的问题。
int id = 1;
DatabaseEntry de = new DatabaseEntry();
de.Data = BitConverter.GetBytes(id);
KeyValuePair<DatabaseEntry, DatabaseEntry> pair = btreeDB.Get(de); // 这一句就异常了

------解决方案--------------------
探讨

搞定了,原来是btreeDB.Put(k, d);之后没有调用Sync,这个函数将数据写入到磁盘,所以磁盘上的文件中并没有数据。
  相关解决方案