1

假设我打开一个 .db4o 文件。生成数据库中包含的唯一 Java CLASSES/TYPES 列表的 Java 代码(伪)是什么?

我确信我可以编写代码来做到这一点,但我担心它可能会很慢。有没有一种好方法可以在不查询数据库中的每个对象的情况下做到这一点?我可以使用某种索引吗?

我宁愿不依赖关于数据库的存储元数据,我宁愿依赖关于哪些对象实际存储在其中的真实信息。

4

1 回答 1

1

您可以使用类似的东西(C#,但它可以很容易地转换为 Java :)

const string DatabaseFileName = "c:\\temp\\Learning.odb";
static void Main(string[] args)
{
    using (var db = Db4oEmbedded.OpenFile(DatabaseFileName))
    {
        var classes = db.Ext().StoredClasses();
        foreach (var @class in classes)
        {
            Console.WriteLine();
            Console.WriteLine(@class.GetName());
            foreach (var field in @class.GetStoredFields())
            {
                Console.WriteLine("\t{1} {0}", field.GetName(), field.GetStoredType().GetName());
            }
        }
    }
}

请注意,您在 ExtObjectContainer 接口中有更多有趣的方法。

希望这可以帮助。

于 2013-08-24T19:32:41.213 回答