[英]Neo4j type mismatch
我試圖在連接到neo4j的eclipse中編寫JDBC代碼。 我可以將其連接到數據庫,但是在運行查詢時遇到了麻煩。 我已導入Neo4J驅動程序jar以及所需的大多數驅動程序。 話雖如此,我仍然在兩個地方出現錯誤:
PreparedStatement statement = conn.prepareStatement(cypher);
給我錯誤:
這行有多個標記
- The method prepareStatement(String) is undefined for the type Connection
- Type mismatch: cannot convert from java.sql.PreparedStatement to org.neo4j.jdbc.PreparedStatement
我很困惑為什么要包含java.sql,因為我沒有將它導入到此類中。
我的另一個錯誤是在線:
連接conn = DriverManager.getConnection(“ jdbc:neo4j:bolt:// localhost”,“”,“”);
我在這里得到的錯誤是:無法解決DriverManager。
我的代碼(未完成)如下。 我的問題是,我應該怎么做才能解決這些錯誤。
private static void runCypher(Connection conn, String cypher) {
PreparedStatement statement = conn.prepareStatement(cypher);
}
public static void main (String[] args) {
try {
Connection conn = DriverManager.getConnection("jdbc:neo4j:bolt://localhost", "", "");
String cypher = "";
String option = "";
String instr = "Enter a: Show distinct sids and snames of suppliers who supply a red part or a green part." + "\n"
+ "Enter b: Show distinct sids and snames of suppliers who supply a red part and a green part."
+ "\n" + "Enter c: Insert a new supplier." + "\n"
+ "Enter d: Quit Program.";
while (true) {
option = JOptionPane.showInputDialog(instr);
if (option.equals("a")) {
cypher = "match (s:Suppliers)-[:supplies]->(p:Parts) where p.color = ‘red’ or p.color = ‘green’ return distinct s.sid, s.sname;";
runCypher(conn, cypher);
} else if (option.equalsIgnoreCase("b")) {
cypher = "match (p1:Parts)<-[:supplies]-(s:Suppliers)-[:supplies]->(p2:Parts) where p1.color = ‘red’ and p2.color = ‘green’ return distinct s.sid, s.sname;";
runCypher(conn, cypher);
} else if (option.equals("c")) {
cypher = "match (p:Parts)<-[sup:supplies]-(s:Suppliers) return p.pid, p.pname, max(toInteger(sup.cost)) order by p.pid;";
runCypher(conn, cypher);
} else {
break;
}
}}catch(Exception e ) {
System.out.println("Program terminates due to errors");
e.printStackTrace(); // for debugging
}
}
我的進口:
import org.neo4j.driver.internal.spi.Connection;
import org.neo4j.driver.v1.StatementResult;
import org.neo4j.jdbc.PreparedStatement;
import org.neo4j.jdbc.ResultSet;
import org.neo4j.jdbc.ResultSetMetaData;
錯誤消息DriverManager cannot be resolved
意味着編譯器不知道該類/字段/ ...,因此它可能缺少相應的導入:
import java.sql.DriverManager;
錯誤The method prepareStatement(String) is undefined for the type Connection
意味着未找到此方法,因為您正在導入(並因此使用)錯誤的Connection
類。 我不記得曾經使用過驅動程序JAR中的類,盡管需要加載驅動程序本身(前一段時間...)。 基於提供給DriverManager
的URL,正確的類用於Java。 您只需要使用java.sql
包中的類即可。
import java.sql.Connection;
import java.sql.PreparedStatement;
...
這是一個非常簡單的示例:
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Neo4j {
public static void main(String[] args) throws Exception {
try (Connection conn = DriverManager.getConnection("jdbc:neo4j:bolt://localhost", "neo4j", "test123")) {
PreparedStatement stmt = conn.prepareStatement("MATCH (a:Aplz) RETURN *");
ResultSet rset = stmt.executeQuery();
while (rset.next()) {
System.out.println(rset.getObject(1));
}
}
}
}
實際上,從不使用Java,您只需要DriverManager
,編譯器就可以做到:
import java.sql.DriverManager;
public class Neo4j {
public static void main(String[] args) throws Exception {
try (var conn = DriverManager.getConnection("jdbc:neo4j:bolt://localhost", "neo4j", "test123")) {
var stmt = conn.prepareStatement("MATCH (a:Aplz) RETURN *");
var rset = stmt.executeQuery();
while (rset.next()) {
System.out.println(rset.getObject(1));
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.