2016-07-27 77 views
2

嗨,如何使用neo4j-jdbc连接到Neo4j 3.0数据库?

我创建了一个日食Maven项目,并添加了依赖性:

<dependency> 
    <groupId>org.neo4j</groupId> 
    <artifactId>neo4j-jdbc</artifactId> 
    <version>3.0</version> 
</dependency> 

我只是试图让我的工作数据库的连接,这样我可以继续前进把这个连接和我的主要项目整合起来,但是我很难把事情做好。

我用官方回购给出的代码示例:

import org.neo4j.jdbc.Connection; 
import org.neo4j.jdbc.PreparedStatement; 
import org.neo4j.jdbc.ResultSet; 

public class Neo4jConnectionTest { 

    public static void main(String[] args) { 
     // Connect 
     Connection con = DriverManager.getConnection(
             "jdbc:neo4j:bolt://localhost"); 

     // Querying 
     String query = "MATCH (u:User)-[:FRIEND]-(f:User) 
         WHERE u.name = {1} 
         RETURN f.name, f.age"; 
     try { 
      PreparedStatement stmt = con.prepareStatement(query); 
      stmt.setString(1,"John"); 
      ResultSet rs = con.execute(); 

      while (rs.next()) { 
       System.out.println(
        "Friend: "+rs.getString("f.name")+" is "+rs.getInt("f.age")); 
      } 
     } catch (Exception e) { e.printStackTrace(); } 
     con.close(); 
    } 
} 

我无法编译此为:

DriverManager不能内的Neo4j-JDBC-3.0,

解决

Prepared stmt = con.prepareStatement(query);引起类型不匹配,

con.execute()是未定义类型

我非常感谢有关此事的任何建议和专业知识,谢谢。

回答

1

DriverManagerConnectionPreparedStatementResultSet是从java.sql包,这是JDK的一部分的所有类或接口。我猜这个文档假设你将使用一个IDE来为你找到正确的导入。

这是使用JDBC驱动程序的要点:您使用JDBC API,而不是专有的(即在供应商软件包中)。


更新

有在的Neo4j-JDBC自述一个错字,它应该已经阅读

ResultSet rs = stmt.execute(); 

代替

ResultSet rs = con.execute(); 

否则PreparedStatement还没有使用(和代码不会编译,因为th这不是没有自负荷的Connection.execute())。


更新2

的记录依赖也是错误的,因为neo4j-jdbc不包含任何驱动程序。

您应取决于:

  • 要么所有功能于一身的模块,它给你使用的螺栓或HTTP协议的机会:

    <dependency> 
        <groupId>org.neo4j</groupId> 
        <artifactId>neo4j-jdbc-driver</artifactId> 
        <version>3.0</version> 
    </dependency> 
    
  • 或模块对于特定的方案:

    <dependency> 
        <groupId>org.neo4j</groupId> 
        <artifactId>neo4j-jdbc-bolt</artifactId> 
        <version>3.0</version> 
    </dependency> 
    <!-- or --> 
    <dependency> 
        <groupId>org.neo4j</groupId> 
        <artifactId>neo4j-jdbc-http</artifactId> 
        <version>3.0</version> 
    </dependency> 
    

更新3

这两个问题现在已经得到修复项目的文档。

+0

进行这些更改'con.execute'仍然是不确定的后(我以使其可以运行评论了这一点)。运行代码后,它抛出一个SQLException'找不到适用于jdbc:neo4j:bolt:// localhost'的合适的驱动程序。我还在做什么错了? – macourtney7

+0

为了保持完整性,我已经用代码和依赖修正更新了答案。 –

+0

我试图测试这个,并提出了建议的更改,但我仍然无法建立连接。这个[JDBCTest](http://pastebin.com/njT0kjJ0)就是我用过的,包含了SQLException抛出的错误信息。我还在做什么错了? – macourtney7

2

通过更改为:

<dependency> 
    <groupId>org.neo4j.driver</groupId> 
    <artifactId>neo4j-java-driver</artifactId> 
    <version>1.0.4</version> 
</dependency> 

我能够用一个例子成功地连接到的Neo4j 3.0服务器从Neo4j的站点:

public static void main(String[] args) { 
    Driver driver = GraphDatabase.driver( 
     "bolt://localhost", AuthTokens.basic("neo4j", "neo4j")); 
    Session session = driver.session(); 

    session.run("CREATE (a:Person {name:'Arthur', title:'King'})"); 

    StatementResult result = session.run( 
             "MATCH (a:Person) 
             WHERE a.name = 'Arthur' 
             RETURN a.name AS name, a.title AS title"); 

    while (result.hasNext()) { 
     Record record = result.next(); 
     System.out.println(record.get("title").asString() + 
           " " + record.get("name").asString()); 
    } 

    session.close(); 
    driver.close(); 
} 

我想我会分享,因为这工作立即没有麻烦。

Neo4j Language Guides