JDBC详细全解(示例超多)
Posted 爱打辅助的小可爱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC详细全解(示例超多)相关的知识,希望对你有一定的参考价值。
文章目录
JDBC
JDBC的概念
1.jdbc的概念
JDBC ( Java DataBaseConnectivity java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,它是由一组用Java语言编写的类和接口组成的。
2.jdbc的本质
其实就是java官方提供的一套规范(接口)。用于帮助开发人员快速实现不同关系型数据库的连接!
JDBC快速入门
jdbc的快速入门步骤:
1.导入jar包
2.注册驱动
3.获取数据库连接
4.获取执行者对象
5.执行sql语句并返回结果
6.处理结果
7.释放资源
示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBC_index1
public static void main(String[] args) throws Exception
//注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");//MySQL5以后可直接省略
//获取数据库连接
Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/cadastre","root","XXXXXX");
//获取执行者对象
Statement stat=con.createStatement();
//执行sql语句并返回结果
String sql="select * from 网易云热评";
ResultSet re=stat.executeQuery(sql);
//处理结果
while (re.next())
System.out.println(re.getString("userId")+"\\t"+re.getString("nickname")+"\\t"+re.getString("content"));
//释放资源
con.close();
JDBC功能详解
1、DriverManager驱动管理对象
(1)注册驱动:(mysql5以后可直接省略驱动)
1.注册给定的驱动程序: staticvoid registerDriver(Driver driver);2.写代码使用:Class.forName(“com.mysql.jdbc.Driver”);
3.在com.mysql.jdbc.Driver类中存在静态代码块
(2)获取数据库连接:
1.获取数据库连接对象: static ConnectiongetConnection(Stringurl, String user,String password);2.返回值:Connection数据库连接对象
3.参数
url:指定连接的路径。语法: jdbc:mysql://ip地址(域名):端口号/数据库名称 user:用户名
password:密码
2、Connection数据库连接对象
1.获取执行者对象:
获取普通执行者对象: Statement createStatement0;
获取预编译执行者对象:PreparedStatement prepareStatement(String sql);2.管理事务
开启事务 : setAutoCommit(boolean autoCommit);参数为false,则开启事务 提交事务:commit();
回滚事务: rollback();
3.释放资源
立即将数据库连接对象释放:void close();
3、Statement执行sql语句的对象
(1)执行DML语句: int executeUpdate(String sql);
返回值int :返回影响的行数。
参数sql:可以执行insert、update、delete语句。
(2) 执行DQL语句:ResultSet executeQuery(String sql);
返回值ResultSet:封装查询的结果。
参数sql:可以执行select语句。
(3)释放资源
立即将数据库连接对象释放:void close();
4、ResultSet结果集对象
1.判断结果集中是否还有数据: boolean next();
有数据返回true,并将索引向下移动一行。没有数据返回false。
2.获取结果集中的数据:XXX getXxx(“列名”);XXX代表数据类型(要获取某列数据,这一列的数据类型)。
例如: String getString(“name”);int getInt(" age");
3.释放资源
立即将结果集对象释放:void close();
JDBC案例
案例需求
使用JDBC完成对student表的CRUD操作
数据准备
1、数据库数据准备
-- 创建数据库
create DATABASE db14;
-- 使用数据库
use db14
-- 创建student表
CREATE TABLE student
(
id int PRIMARY KEY,
sname VARCHAR(20),
age int,
brithday date
);
-- 添加数据
INSERT into student VALUES(1,'张飞',23,'1999-08-11'),(2,'李四',23,'1998-08-11'),(3,'王五',23,'1997-08-11'),(4,'关羽',23,'1995-08-11');
2、创建student类
package Com.Stuclass;
import java.util.Date;
public class Student
private Integer id;
private String sname;
private Integer age;
private Date birthday;
public Student(Integer id, String sname, Integer age, Date birthday)
this.id = id;
this.sname = sname;
this.age = age;
this.birthday = birthday;
public Integer getId()
return id;
public void setId(Integer id)
this.id = id;
public String getSname()
return sname;
public void setSname(String sname)
this.sname = sname;
public Integer getAge()
return age;
public void setAge(Integer age)
this.age = age;
public Date getBirthday()
return birthday;
public void setBirthday(Date birthday)
this.birthday = birthday;
@Override
public String toString()
return "Student" +
"id=" + id +
", sname='" + sname + '\\'' +
", age=" + age +
", birthday=" + birthday +
'';
功能实现
1、查询所有学生信息
public ArrayList<Student> findAll()
ArrayList<Student> list=new ArrayList<>();
Connection con=null;
try
con= DriverManager.getConnection(conName,name,password);
Statement statement = con.createStatement();
String sql="select * from student";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next())
Integer id=resultSet.getInt("id");
String sname=resultSet.getString("sname");
Integer age=resultSet.getInt("age");
Date birthday=resultSet.getDate("brithday");
Student s=new Student(id,sname,age,birthday);
list.add(s);
catch (SQLException e)
e.printStackTrace();
finally
try
con.close();
catch (SQLException e)
e.printStackTrace();
return list;
2、通过ID查询学生信息
public Student findById(Integer id)
Connection con=null;
Student s = null;
try
con=DriverManager.getConnection(conName,name,password);
String sql="select * from student where id=?";
PreparedStatement pstate = con.prepareStatement(sql);
pstate.setInt(1,id);
ResultSet resultSet = pstate.executeQuery();
while (resultSet.next())
s=new Student(id,resultSet.getString("sname"),resultSet.getInt("age"),resultSet.getDate("brithday"));
catch (SQLException e)
e.printStackTrace();
finally
try
con.close();
catch (SQLException e)
e.printStackTrace();
return s;
3、添加学生记录
public int insert(Integer id, String sname, Integer age, String birthday)
Connection con=null;
int re=0;
Date date=new Date();//需要new一个Date对象
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); //设置日期格式 yyyy-MM-dd-HH-mm-ss这个是完整的
try
date = dateFormat.parse(birthday);
catch (ParseException e)
e.printStackTrace();
try
con= JDBCUtils.getConnect();
String sql="insert into student values(?,?,?,?)";
PreparedStatement p=con.prepareStatement(sql);
p.setInt(1,id);
p.setString(2,sname);
p.setInt(3,age);
p.setDate(4, new java.sql.Date(date.getTime()));
re = p.executeUpdate();
catch (SQLException e)
e.printStackTrace();
finally
try
con.close();
catch (SQLException e)
e.printStackTrace();
return re;
4、修改学生信息
public int update(String name1,Integer age)
Connection con=null;
int result=0;
String sql="update student " +
"set age=? " +
"where sname=?";
try
con= JDBCUtils.getConnect();
PreparedStatement p = con.prepareStatement(sql);
p.setInt(1,age);
p.setString(2,name1);
result = p.executeUpdate();
catch (SQLException e)
e.printStackTrace();
finally
try
con.close();
catch (SQLException e)
e.printStackTrace();
return result;
5、删除学生记录
public int delete(Integer id)
Connection con=null;
int result=0;
try
con= JDBCUtils.getConnect();
String sql="delete from student where id=?";
PreparedStatement p = con.prepareStatement(sql);
p.setInt(1,id);
result = p.executeUpdate();
catch (SQLException e)
e.printStackTrace();
finally
try
con.close();
catch (SQLException e)
e.printStackTrace();
return result;
推荐使用工具类
配置信息:(在src目录下创建config.properties文件)
driverClass=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/db14
username=root
password=XXXXXXx
工具类:
package Com.Stuclass.utils;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
/*
* JDBC工具类
* */
public class JDBCUtils
// 1、构造方法私有
private JDBCUtils()
// 2、声明所需要的配置变量
private static String driverClass;
private static String url;
private static String username;
private static String password;
private static Connection con;
// 3、提供静态代码块,读取配置文件信息为变量赋值,注册驱动
static
try
// 赋值
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("config.properties");
Properties pro=new Properties();
pro.load(is);
driverClass=pro.getProperty("driverClass");
url=pro.getProperty("url");
username=pro.getProperty("username");
password=pro.getProperty("password");
// 注册驱动
Class.forName(driverClass);
catch (IOException e)
e.printStackTrace();
catch (ClassNotFoundException e)
e.printStackTrace();
// 获取数据库连接
public static Connection getConnect()
try
con= DriverManager.getConnection(url,username,password);
catch (SQLException e)
e.printStackTrace();
return con;
// 关闭连接
public static void close(Connection con, Statement state, ResultSet rs)
if (con!=null)
try
con.close();
catch (SQLException e)
e.printStackTrace();
if (state!=null)
try
state.close();
catch (SQLException e)
e.printStackTrace();
if (rs!=null)
try
rs.close();
catch (SQLException e)
e.printStackTrace();
public static void close(Connection con, Statement state)
if (con!=null)
try
con.close();
catch (SQLException e)
e.printStackTrace();
if (state!=null)
try
state.close();
catch (SQLException e)
e.printStackTrace();
一、下载安装包
安装包下载地址:https://www.mysql.com/cn/downloads/
MySQL版本:mysql-8.0.29-winx64
1.选择社区免费版本
2.选择操作系统和安装包,有MSI和ZIP两种,在此选择ZIP
3.点击左下角"No thanks, just start my download.",可以无需注册和登录,直接下载资源
二、解压安装包
以上是关于JDBC详细全解(示例超多)的主要内容,如果未能解决你的问题,请参考以下文章