使用 JDBC 连接 Neo4j(头歌)

文章目录

第1关:连接 Neo4j (JDBC)

任务描述

本关任务:使用 JDBC 进行 Neo4j 数据库查询。

相关知识

为了完成本关任务,你需要掌握:

  1. 完成 JDBC 环境设置;
  2. 连接 Neo4j 对数据进行查询。

完成 JDBC 环境设置

需要准备的 jar 包有: Neo4j-2.0.1-SNAPSHOT Version; 还有一个是 neo4j 的 lib 文件夹下的 neo4j-kernel-*.jar(* 号为版本号);

将这两个 jar 包导入到所需要的项目中就可以了。

jar 包

注意: 这些 jar 包在本实训中已经为大家准备好了,所以大家不用去再添加 jar 包。

连接 Neo4j 对数据进行查询

需要导入的包为:

java 复制代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
  • 使用 JDBC 驱动连接到 Neo4j :

    java 复制代码
    Connection con = DriverManager.getConnection("jdbc:neo4j://localhost:7474/","usrname","password");

后面的 usernamepassword 需要修改为你的 Neo4j 的用户名和密码。

注意: 实训中的 Neo4j 用户名和密码为:neo4j123456

  • 创建 Statement 进行 CQL 操作:

创建 Statement

java 复制代码
Statement stmt = con.createStatement()
  • 使用 stmt 进行增删改查操作:主要使用三个方法进行 executeQuery(查) 和 execute(增、删)、executeUpdate(改); executeQuery

源码解释: ResultSet executeQuery(String sql) throws SQLException;: 主要用于查询数据,需要写入查询语句,进行查询。并且返回值为 ResultSet 结果集,获取数据需要进行循环获取。使用 while 结合 ResultSet.next()使用,使用 getString(String 字段)获取查询的字段数据。 并且需要抛出异常。

java 复制代码
// 获取结果集
ResultSet rs = stmt.executeQuery("MATCH (n:Person) RETURN n.name");
// 循环获取数据
while(rs.next()) {
    System.out.println(rs.getString("n.name"));
}

查询结果

红色部分为日志,黑色部分为查询出来的结果集。

boolean execute(String sql) throws SQLException;

可以进行创建和删除节点、关系,返回的为布尔类型的数据,返回 true 表示操作成功,返回 false 表示操作失败。 并且需要抛出异常。 创建节点:

java 复制代码
String insertSql = "create (:test {name:'test_2'})";
stmt.execute(insertSql);

创建代码

创建成功

删除只需要将 Cql 修改为删除语句即可:match (n:test) delete n

int executeUpdate(String sql) throws SQLException;

修改语句为:match (n:test) where n.name="test_2" set n.name="test_1"; 并且需要抛出异常。

使用方法与删除基本一样。

编程要求

根据提示,在右侧编辑器补充代码,查询 movies 数据中,Person 节点中按 name 升序后的,前五个数据的 bornname 两个字段的数据。

注意: 导入 movies数据直接在 Neo4j 界面中输入::play movies,按 Enter 后。会出现一个向导界面,在第二个页面点击一个小播放键即可载入数据。

操作流程

测试说明

平台会对你编写的代码进行测试:

测试输入:; 预期输出:(头歌上给出的预期输出是按照出生年升序的,实际如下,应该是按照姓名升序的)

java 复制代码
出生年:1961,姓名:Aaron Sorkin
出生年:1940,姓名:Al Pacino
出生年:null,姓名:Angela Scope
出生年:1960,姓名:Annabella Sciorra
出生年:1962,姓名:Anthony Edwards
Unexpected token END_ARRAY
errors-next-token = FIELD_NAME
null

答案

测试前准备

sh 复制代码
# 更新配置文件
source /etc/profile

# 启动 Neo4j
/opt/neo4j-community-3.5.35/bin/neo4j start

# 注意
进入 Neo4j 界面,输入:':play movies',按 Enter 后。会出现一个向导界面,在第二个页面点击一个小播放键即可载入数据。

代码文件

java 复制代码
package test_neo4j.neo4j.java.examples;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.neo4j.jdbc.Driver;


//Connect

public class JDBCNeo4j {

	public static void main(String[] args) throws SQLException, ClassNotFoundException {
		//**************Begin************************* 

        // 使用 JDBC 连接 Neo4j
		Connection con = DriverManager.getConnection("jdbc:neo4j://localhost:7474/","neo4j","123456");
        
		// 创建连接
        Statement stmt = con.createStatement();

        // 查询数据
		ResultSet rs = stmt.executeQuery("MATCH (n:Person) RETURN n.born, n.name order by n.name limit 5");
        
        // 输出数据
		while(rs.next()) {
       		System.out.println("出生年:" + rs.getString("n.born") + ",姓名:" + rs.getString("n.name"));
       	}
		
        //**************End************************* 
	}

}
相关推荐
小白—人工智能13 分钟前
数据分析 —— 数据预处理
python·数据挖掘·数据分析
若叶时代16 分钟前
数据分析_Python
人工智能·python·数据分析
英英_25 分钟前
python 爬虫框架介绍
开发语言·爬虫·python
大模型铲屎官2 小时前
【Python-Day 14】玩转Python字典(上篇):从零开始学习创建、访问与操作
开发语言·人工智能·pytorch·python·深度学习·大模型·字典
yunvwugua__2 小时前
Python训练营打卡 Day27
开发语言·python
Stara05113 小时前
基于多头自注意力机制(MHSA)增强的YOLOv11主干网络—面向高精度目标检测的结构创新与性能优化
人工智能·python·深度学习·神经网络·目标检测·计算机视觉·yolov11
那雨倾城4 小时前
使用 OpenCV 将图像中标记特定颜色区域
人工智能·python·opencv·计算机视觉·视觉检测
LuckyTHP6 小时前
java 使用zxing生成条形码(可自定义文字位置、边框样式)
java·开发语言·python
mahuifa8 小时前
(7)python开发经验
python·qt·pyside6·开发经验
学地理的小胖砸9 小时前
【Python 操作 MySQL 数据库】
数据库·python·mysql