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详细全解(示例超多)的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis全解

JDBC

JDBC连接Oracle

如何使用 clojure.java.jdbc 插入包含时间戳值的行?

JDBC API阐述

SQL Server CTE 递归查询全解