Драйвер neo4j-jdbc минимально жизнеспособный фрагмент, не знаете, как разрешить зависимости - PullRequest
0 голосов
/ 02 мая 2018

У меня проблемы с получением минимального жизнеспособного фрагмента для работы драйвера Neo4J-jdbc. Я использую идею IntelliJ с Gradle. Когда I 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 голосов
/ 03 мая 2018

Вам нужно импортировать 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"));
                    }
                }
            }
        }
    }
}
...