【问题标题】:Neo4j: How to open an existing database in neo4j using java api?Neo4j:如何使用 java api 在 Neo4j 中打开现有数据库?
【发布时间】:2014-11-19 11:37:29
【问题描述】:

如何使用java api在neo4j中使用已有的数据库?我已经创建了一个 neo4j 数据库,并希望将其用于多个查询。但是,当我打开我创建的现有数据库并进行一些查询时,它什么也没返回。我正在使用的代码片段如下:

private static final String DB_PATH = "c:/Users/Reed/workspace/test/target1/ttldb";
GraphDatabaseService db = new GraphDatabaseFactory().newEmbeddedDatabase( DB_PATH );


ExecutionEngine engine = new ExecutionEngine( db );

ExecutionResult result;

try ( Transaction tx = db.beginTx(); )
{

    result = engine.execute( "match (n) return n" );

    Iterator<Node> n_column = result.columnAs( "n" );
    for ( Node node : IteratorUtil.asIterable( n_column ) )
    {

        nodeResult = node + ": " + node.getProperty( "name" );

        System.out.println(nodeResult);
    }
    tx.success();

}

有什么建议吗?提前谢谢你。

【问题讨论】:

  • 您的变量nodeResult 未声明。您真的确定您的数据库包含数据吗?您是如何创建数据的?您在导入后提交了吗?
  • 默认情况下,neo4j 数据库不会有任何数据。您应该确保当您在数据库中执行写入时您正在提交它们,并且您正在正确关闭数据库(使用关闭挂钩以确保正确刷新数据)。
  • 如果您的路径是好的路径(您想要获取的 db 文件夹),一切都应该可以正常工作。唯一缺少的是 try 子句末尾的 finally{tx.close()} 块。
  • 您还应该考虑您的 neo4j 数据库的来源。如果您正在阅读的数据库与您的客户端的版本完全不同,您可能会遇到麻烦。 neo4j 网站非常清楚哪些客户端可以读取哪些数据库版本。

标签: java neo4j


【解决方案1】:

如果您在嵌入式模式下使用 Neo4j,即它与您的应用程序在同一个 JVM 中运行,您可以使用以下方式访问它:

GraphDatabaseService graphDb = new GraphDatabaseFactory().newEmbeddedDatabase(DBPATH)

其中 DBPATH 是您使用 Webadmin 创建的数据库的路径。您可以在 neo4j 安装目录/conf/neo4j-server.properties 中找到该路径(属性名称为 org.neo4j.server.database.location)

一旦你实例化了你的graphDb,你就可以Execute Cypher queries from Java

如果你不是在嵌入式模式下使用 Neo4j 并且想要连接到运行在端口 7474 上的现有服务器,你可以使用 java rest 绑定:https://github.com/neo4j/java-rest-binding/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多