Neo4j:如何使用Java API打开现有的Neo4j数据库?

9
如何使用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 没有声明。你确定你的数据库包含数据吗?你是如何创建这些数据的?导入后是否提交了数据? - tstorms
1
默认情况下,neo4j数据库将不包含任何数据。您应确保在对数据库执行写操作时进行提交,并正确关闭DB(使用关闭挂钩以确保数据正确刷新)。 - Nicholas
如果你的路径是正确的(你想要获取的db文件夹),一切都应该正常工作。唯一缺少的是在try子句末尾添加一个finally{tx.close()}块。 - Supamiu
你应该考虑你的neo4j数据库来自哪里。如果你正在读取的数据库与你的客户端版本相差很大,你可能会遇到麻烦。neo4j网站非常清楚地说明了什么客户端可以读取什么数据库版本。 - John Deverall
1个回答

0

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

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

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

一旦您实例化了graphDb,就可以从Java执行Cypher查询

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接