您好,
我在eclipse中创建了一个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()
未定义和org.neo4j.jdbc.Connection
非常感谢有关此事的任何建议和专业知识,谢谢。
答案 0 :(得分:2)
改为:
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver</artifactId>
<version>1.0.4</version>
</dependency>
我能够使用Neo4j网站上的一个例子成功连接到Neo4j 3.0服务器:
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();
}
我以为我会分享,因为这样可以立即解决问题。
答案 1 :(得分:1)
DriverManager
,Connection
,PreparedStatement
和ResultSet
都是来自java.sql
包的类或接口,它是JDK的一部分。我想文档假设您将使用IDE,它将为您找到正确的导入。
这是使用JDBC驱动程序的重点:您使用的是JDBC API,而不是专有的(即在供应商包中)。
<强>更新强>
neo4j-jdbc自述文件中有一个拼写错误,它应该已读取
ResultSet rs = stmt.execute();
而不是
ResultSet rs = con.execute();
否则PreparedStatement
没有使用(并且代码无法编译,因为Connection.execute()
没有no-arg重载。)
更新2
记录的依赖项也是错误的,因为neo4j-jdbc
不包含任何驱动程序。
你应该依赖:
一体化模块,让您有机会使用Bolt或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
现在已经在项目文档中修复了这两个问题。