国内很多人在neo4j开发过程中应该参考的都是w3c.school 的开发手册,在开发手册中没有提供链接默认数据库的方法,而且提供的服务器版本和浏览器启动的并不是一个版本。现在就给大家提供两种java连接案默认数据库方法。
一、使用JDBC连接neo4j数据库,类似于Java连接mysql 的方法:具体代码如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class CreaBase {
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
Connection con = DriverManager.getConnection("jdbc:neo4j://127.0.0.1:7474/","neo4j","123"); //这里可以使用localhost,最好还是使用ip地址,
//Querying
try(Statement stmt = con.createStatement())
{
ResultSet rs = stmt.executeQuery("create (n0:employ { name: 'S' }),(ma:manage { name: 'A1' })");
while(rs.next())
{
System.out.println(rs.getString("n"));
}
}
}
}
亲测有效!代码中连接数据库之后创建了两个节点,现在去浏览器里面是查找这两个节点:
1、match(n0:employ)return n0
2、match(ma:manage)return ma
但是这种方法也有些缺陷:由于是使用Java集成包连接的数据库,在连接之后使用的jdbc中的方法去操作数据库,neo4j数据库和关系型数据库在反馈的结果形式有差异,所以使用jdbc 对数据操作时不是很方便。
例如下面这段代码在执行过程中会出错,getString(“ma.id”)并不能执行:
Connection con = DriverManager.getConnection("jdbc:neo4j://127.0.0.1:7474/","neo4j","123");
//Querying
try(Statement stmt = con.createStatement())
{
// ResultSet rs1 = stmt.executeQuery("create (n0:employ { name: 'S1',id:'123' }),(ma:manage { name: 'A2',id:'456' })");
ResultSet rs=stmt.executeQuery("match (ma:manage) where ma.id='456' return ma");
while(rs.next())
{
System.out.println(rs.getString("ma.id"));
}
二、在查阅英文开发文档之后发现方法newEmbeddedDatabase(file)在执行过程中会检查路径中时候有这个文件(file),如果有就对这个数据库进行操作,在间接默认数据库时,只需将file的路径改成graph.db的路径即可。代码如下:
import java.io.File;
import java.sql.Driver;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
import org.neo4j.*;
public class Neo4jbaseTest {
public static void main(String[] args) {
String input="F:\\neo4j-community-3.3.0-alpha04\\data\\databases\\graph.db";
File file=new File(input);
GraphDatabaseFactory dbFactory = new GraphDatabaseFactory();
GraphDatabaseService db= dbFactory.newEmbeddedDatabase(file);
try (Transaction tx = db.beginTx()) {
Node javaNode = db.createNode(Tutorials.PHP);
javaNode.setProperty("TutorialID", "PHP001");
javaNode.setProperty("Title", "Learn PHP");
javaNode.setProperty("NoOfChapters", "25");
javaNode.setProperty("Status", "Completed");
Node scalaNode = db.createNode(Tutorials.ASP);
scalaNode.setProperty("TutorialID", "ASP001");
scalaNode.setProperty("Title", "Learn ASP");
scalaNode.setProperty("NoOfChapters", "20");
scalaNode.setProperty("Status", "Completed");
Relationship relationship = javaNode.createRelationshipTo
(scalaNode,TutorialRelationships.JVM_LANGIAGES);
relationship.setProperty("Id","1234");
relationship.setProperty("OOPS","YES");
relationship.setProperty("FP","YES");
tx.success();
}
System.out.println("Done successfully");
}
}
亲测通过。但是这中方法也有个缺点就是,Java在对接数据库时,数据库服务器不能启动,只能在关闭状态才能使用。更好的方法还在探索。会持续更新!
参考: java用jdbc连接neo4j