我在获取 Neo4J-jdbc 驱动程序工作的最小可行代码段时遇到问题。我在 gradle 中使用 intelliJ idea。当我 import org.neo4j.jdbc.*;
时,DriverManager
无法解析并且多次出现 Unhandled Exception: java.sql.SQLException
。当我 import java.sql.*
时,有更多的 java.sql.SQLException
错误。当我同时导入这两个库时,会出现多个错误,因为两个库之间的引用不明确。
官方文档中的最小可行代码段如下:
// Connecting
try (Connection con = DriverManager.getConnection("jdbc:neo4j:bolt://localhost", 'neo4j', password)) {
// 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");
try (ResultSet rs = stmt.execute()) {
while (rs.next()) {
System.out.println("Friend: "+rs.getString("f.name")+" is "+rs.getInt("f.age"));
}
}
}
}
Gradle 依赖:
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile group: 'org.neo4j', name: 'neo4j-jdbc-bolt', version: '3.1.0'
compile 'com.sparkjava:spark-core:2.3'
}
我真的在这里寻找一个最小的实现,我只是想知道我错过了什么来让最小的代码段工作。
最佳答案
您需要导入 java.sql.*
,仅此而已。是的,您将遇到一些 SQLException
,但您只需在 catch 中处理它们
或通过在您的方法签名中添加异常(如下所示)。
代码片段中有一个错误,stmt.execute()
返回一个 boolean
而不是 ResultSet
,因此您需要将其替换为 stmt.executeQuery()
。
这是一个完整/有效的例子:
import java.sql.*;
public class JDBCTest {
public static void main() throws SQLException {
// Connecting
try (Connection con = DriverManager.getConnection("jdbc:neo4j:bolt://localhost", "neo4j", "admin")) {
// 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");
try (ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
System.out.println("Friend: "+rs.getString("f.name")+" is "+rs.getInt("f.age"));
}
}
}
}
}
}
关于java - neo4j-jdbc 驱动程序最小可行片段,不确定如何解决依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50143228/