【问题标题】:Retrieving value from objectdb database from program从程序中从 objectdb 数据库中检索值
【发布时间】:2023-03-07 04:29:01
【问题描述】:

我在尝试通过程序获取数据时遇到了一些问题。我使用 objectDB 作为我的数据库。另外,我的数据库已经设置好了,并且我已经将laptop.odb 文件放到了我的objectDB 安装的db 文件夹中。另外,当我转到资源管理器并触发查询时:

select this.modelName == "HP Pavillion"

出现正确的结果。但是,当我尝试用我的代码做同样的事情时,如下

public static void main(String argv[]) {
PersistenceManager pm = Utilities.getPersistenceManager("laptop.odb"); System.out.println("-- TEST --\n");
Query query = pm.newQuery(Laptop.class,"this.modelName == \"HP Pavillion\""); Collection result = (Collection)query.execute(); System.out.println("Result is >> "+result);

此处不返回任何结果。我的输出是:
-- 测试发现 --

结果是 >> []

我的课程代码如下。

    package com.project;

    import java.util.*;

    import javax.annotation.processing.Processor;
    import javax.jdo.*;

    import com.objectdb.Utilities;

    public class Laptop {

        String modelName; // key

public static void main(String argv[]) {
        PersistenceManager pm = Utilities.getPersistenceManager("laptop.odb");
        System.out.println("-- TEST find --\n");
        Query query = pm.newQuery(Laptop.class,"this.modelName == \"HP Pavillion\"");
        Collection result = (Collection)query.execute();
        System.out.println("Result is >> "+result);

}

有什么建议吗?

【问题讨论】:

    标签: java database objectdb


    【解决方案1】:

    原因可能是“laptop.odb”引用了一个不存在的 ObjectDB 数据库。在这种情况下,会自动创建一个新数据库。因为它创建的新数据库是空的,所以查询没有返回任何结果。

    尝试指定现有数据库的绝对路径。

    【讨论】:

    • 创建数据库的默认位置是什么,以便我可以将laptop.odb 文件放在那里,因此程序不会再次创建它?谢谢
    • 默认位置是当前目录(操作系统概念),但如果您使用“$objectdb/laptop.odb”,则该位置是 ObjectDB 主目录,如 objectdb.com/java/jpa/setting 中定义的那样/跨度>
    • 谢谢。您能否回答我在stackoverflow.com/questions/10637513/… 发布的另一个问题。提前致谢。
    猜你喜欢
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2017-08-18
    • 2018-04-18
    • 2018-06-21
    • 1970-01-01
    相关资源
    最近更新 更多