【发布时间】: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 网站非常清楚哪些客户端可以读取哪些数据库版本。