neo4j-jdbc驱动程序最小可行片段,不确定如何解决依赖性

时间:2018-05-02 20:40:01

标签: java database jdbc neo4j graph-databases

我遇到了为Neo4J-jdbc驱动程序工作获取最小可行代码段的问题。我正在使用带有gradle的intelliJ想法。当我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'
}

我真的在寻找一个最小的实现,我只是好奇我错过了什么来让最小的代码段工作。

1 个答案:

答案 0 :(得分:2)

您需要导入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"));
                    }
                }
            }
        }
    }
}