【浅学 JDBC】

news2024/11/25 4:31:56

浅学JDBC 笔记记录

  • 一、
    • 1. JDBC的概念
    • 2. JDBC快速入门
      • 2.1 DriverManager
      • 2.2 Connection
      • 2.3 Statement
      • 2.4 ResultSet
    • 3. JDBC入门案例使用
      • 3.1 查询所有学生信息
      • 3.2 根据id查询学生信息&&新增学生信息&&修改学生信息&&删除学生信息

一、

1. JDBC的概念

在这里插入图片描述

2. JDBC快速入门

import java.sql.*;

public class JDBCDemo01 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1. 导入jar包   此处使用maven依赖引入
        //2. 注册驱动
        // 此步骤可以跳过 源码中已经填充
       // Class.forName("com.mysql.jdbc.Driver");
        //3. 获取连接
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db8", "root", "root");
        //4. 获取执行者对象
        Statement stat = con.createStatement();
        //5. 执行sql语句,并且接受sql语句返回结果
        String sql="select * from account";
        ResultSet rs = stat.executeQuery(sql);
        //6.处理结果
        while (rs.next()){
            System.out.println(rs.getInt("id")+"\t"+rs.getString("name")+"\t"+rs.getString("money"));
        }
        //7.释放相关资源
        con.close();
        stat.close();
        rs.close();

    }
}

上面使用的类进行详解

2.1 DriverManager

在这里插入图片描述
在这里插入图片描述

2.2 Connection

在这里插入图片描述

2.3 Statement

在这里插入图片描述

2.4 ResultSet

在这里插入图片描述

3. JDBC入门案例使用

数据准备

create database db1;
use db1;
#创建Student表
create table student(
  id int primary key auto_increment,
	name varchar(20),
	age int,
	birthday Date
);
#添加数据
insert into student values (null,'张三',23,'1999-09-23'),(null,'李四',24,'1998-08-10'),(null,'王五',25,'1996-06-06')
,(null,'赵六',26,'1994-10-20');

实体类

package domain;

import java.util.Date;

public class Student {
    private Integer id;
    private String name;
    private Integer age;
    private Date birthday;

    public Student() {
    }

    public Student(Integer id, String name, Integer age, Date birthday) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.birthday = birthday;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    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 "domain.Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", birthday=" + birthday +
                '}';
    }
}

3.1 查询所有学生信息

dao:
public interface StudentDao {
 ArrayList<Student> findAll();
 }
daoImpl:
public class StudentDaoImpl implements StudentDao{
    //查询所有学生信息
    @Override
    public ArrayList<Student> findAll() {
        ArrayList<Student> list=new ArrayList();
        Connection con =null;
        Statement statement =null;
        ResultSet resultSet =null;
        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.获取连接
             con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", "root", "root");
            //3.获取执行者对象
             statement = con.createStatement();
            //4.执行sql语句。并且接受返回的结果集
            String sql="select * from student";
            resultSet = statement.executeQuery(sql);
            //5.处理结果集
            while (resultSet.next()){
                Integer id=resultSet.getInt("id");
                String name=resultSet.getString("name");
                Integer age=resultSet.getInt("age");
                Date date=resultSet.getDate("birthday");
                //封装Student对象
                Student student=new Student(id,name,age,date);
                //将Student保存到集合对象
                list.add(student);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (con!=null){
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (statement!=null){
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (resultSet!=null){
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

        }
        return list;
    }
}
service:
public interface StudentService {
    //查询所有学生信息
    ArrayList<Student> findAll();
    }
serviceImpl:
public class StudentServiceImpl implements StudentService{
    private StudentDao dao=new StudentDaoImpl();
    @Override
    public ArrayList<Student> findAll() {
        return dao.findAll();
    } 
   }
controller:
package controller;

import domain.Student;
import org.junit.Test;
import service.StudentService;
import service.StudentServiceImpl;

import java.util.ArrayList;
public class StudentController {
    private StudentService  service=new StudentServiceImpl();
    @Test
    public void findAll(){
        ArrayList<Student> list = service.findAll();
        for (Student student:list){
            System.out.println(student);
        }
    }
}
   

成功:
在这里插入图片描述

3.2 根据id查询学生信息&&新增学生信息&&修改学生信息&&删除学生信息

dao:

package dao;

import domain.Student;

import java.util.ArrayList;

/**
 Dao层接口
 */

public interface StudentDao {
    //查询所有学生信息
    ArrayList<Student> findAll();

    //条件查询,根据id获取学生信息
    Student findById(Integer id);

    //新增学生信息
    int insert(Student stu);

    //修改学生信息
    int update(Student stu);

    //删除学生信息
    int delete(Integer id);
}

daoImpl:

package dao;

import domain.Student;

import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
public class StudentDaoImpl implements StudentDao{
    //查询所有学生信息
    @Override
    public ArrayList<Student> findAll() {
        ArrayList<Student> list=new ArrayList();
        Connection con =null;
        Statement statement =null;
        ResultSet resultSet =null;
        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.获取连接
             con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1?useSSL=false", "root", "root");
            //3.获取执行者对象
             statement = con.createStatement();
            //4.执行sql语句。并且接受返回的结果集
            String sql="select * from student";
            resultSet = statement.executeQuery(sql);
            //5.处理结果集
            while (resultSet.next()){
                Integer id=resultSet.getInt("id");
                String name=resultSet.getString("name");
                Integer age=resultSet.getInt("age");
                Date date=resultSet.getDate("birthday");
                //封装Student对象
                Student student=new Student(id,name,age,date);
                //将Student保存到集合对象
                list.add(student);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (con!=null){
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (statement!=null){
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (resultSet!=null){
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

        }
        return list;
    }
    //条件查询,根据id获取学生信息
    @Override
    public Student findById(Integer id) {
        Student student=new Student();
        Connection con =null;
        Statement statement =null;
        ResultSet resultSet =null;
        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.获取连接
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1?useSSL=false", "root", "root");
            //3.获取执行者对象
            statement = con.createStatement();
            //4.执行sql语句。并且接受返回的结果集
            String sql="select * from student where id='"+id+"'";
            resultSet = statement.executeQuery(sql);
            //5.处理结果集
            while (resultSet.next()){
                Integer sid=resultSet.getInt("id");
                String name=resultSet.getString("name");
                Integer age=resultSet.getInt("age");
                Date date=resultSet.getDate("birthday");
                //封装Student对象
                student=new Student(sid,name,age,date);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (con!=null){
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (statement!=null){
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (resultSet!=null){
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

        }
        return student;
    }
    //新增学生信息
    @Override
    public int insert(Student stu) {
        Connection con =null;
        Statement statement =null;
        int result=0;
        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.获取连接
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1?useSSL=false", "root", "root");
            //3.获取执行者对象
            statement = con.createStatement();
            //4.执行sql语句。并且接受返回的结果集
            Date birthday = stu.getBirthday();
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            String date = sdf.format(birthday);
            String sql="insert into student values('"+stu.getId()+ "','"+stu.getName()+"','"+stu.getAge()+"','"+date+"')";
            result = statement.executeUpdate(sql);
            //5.处理结果集

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (con!=null){
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (statement!=null){
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return result;
    }
    //修改学生信息
    @Override
    public int update(Student stu) {
        Connection con =null;
        Statement statement =null;
        int result=0;
        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.获取连接
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1?useSSL=false", "root", "root");
            //3.获取执行者对象
            statement = con.createStatement();
            //4.执行sql语句。并且接受返回的结果集
            Date birthday = stu.getBirthday();
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            String date = sdf.format(birthday);
            String sql="update student set  id='"+stu.getId()+"',name='"+stu.getName()+"',age='"+stu.getAge()+"',birthday='"+date+"' where id='"+stu.getId()+"'";
            result = statement.executeUpdate(sql);
            //5.处理结果集

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (con!=null){
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (statement!=null){
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return result;
    }
    //删除学生信息
    @Override
    public int delete(Integer id) {
        Connection con =null;
        Statement statement =null;
        int result=0;
        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.获取连接
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1?useSSL=false", "root", "root");
            //3.获取执行者对象
            statement = con.createStatement();
            //4.执行sql语句。并且接受返回的结果集
            String sql="delete from student where id='"+id+"'";
            result = statement.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (con!=null){
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (statement!=null){
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return result;
    }
}

service:

package service;

import domain.Student;

import java.util.ArrayList;

public interface StudentService {
    //查询所有学生信息
    ArrayList<Student> findAll();

    //条件查询,根据id获取学生信息
    Student findById(Integer id);

    //新增学生信息
    int insert(Student stu);

    //修改学生信息
    int update(Student stu);

    //删除学生信息
    int delete(Integer id);
}

serviceImpl:

package service;

import dao.StudentDao;
import dao.StudentDaoImpl;
import domain.Student;

import java.util.ArrayList;

public class StudentServiceImpl implements StudentService{
    private StudentDao dao=new StudentDaoImpl();
    @Override
    public ArrayList<Student> findAll() {
        return dao.findAll();
    }

    @Override
    public Student findById(Integer id) {
        return dao.findById(id);
    }

    @Override
    public int insert(Student stu) {
        return dao.insert(stu);
    }

    @Override
    public int update(Student stu) {
        return dao.update(stu);
    }

    @Override
    public int delete(Integer id) {
        return dao.delete(id);
    }
}

controller:

package controller;

import com.sun.xml.internal.bind.v2.model.core.ID;
import domain.Student;
import org.junit.Test;
import service.StudentService;
import service.StudentServiceImpl;

import java.util.ArrayList;
import java.util.Date;

public class StudentController {
    private StudentService  service=new StudentServiceImpl();
    //查询所有学生信息
    @Test
    public void findAll(){
        ArrayList<Student> list = service.findAll();
        for (Student student:list){
            System.out.println(student);
        }
    }
    //条件查询,根据id获取学生信息
    @Test
    public void findById(){
        Student student=service.findById(1);
        System.out.println(student);
    }
    //新增学生信息
    @Test
    public void insert(){
        Student student=new Student(5,"李薇",88,new Date());
        int result = service.insert(student);
        if (result!=0){
            System.out.println("添加成功");
        }else {
            System.out.println("添加失败");
        }
    }

    //修改学生信息
    @Test
    public void update(){
        Student stu = service.findById(5);
        stu.setName("李兔兔");
        int result = service.update(stu);
        if (result!=0){
            System.out.println("更新成功");
        }else {
            System.out.println("更行失败");
        }
    }
    //删除学生信息
    @Test
    public void delete(){
        int result = service.delete(5);
        if (result!=0){
            System.out.println("删除成功");
        }else {
            System.out.println("删除失败");
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/586690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中科易安8周年,与你相约联网智能门锁

中科易安与物联网技术发展同频 持续推动安防信息化建设 打造多场景应用的数智化通行解决方案 促进技术与安全精准对接 联网智能门锁技术硬核 中科易安打造集NB-IoT、Sub-1G Cat.1、Wifi、RS485和BLE 5.0 在内的六大通信技术组网方案 以“联网”赋能智能门锁 实现通行数…

C++11之atomic原子操作

atomic介绍 多线程间是通过互斥锁与条件变量来保证共享数据的同步的&#xff0c;互斥锁主要是针对过程加锁来实现对共享资源的排他性访问。很多时候&#xff0c;对共享资源的访问主要是对某一数据结构的读写操作&#xff0c;如果数据结构本身就带有排他性访问的特性&#xff0c…

chatgpt赋能python:Python中的等待:理解和优化

Python中的等待&#xff1a;理解和优化 Python是一种强大的编程语言&#xff0c;在构建各种应用程序时很常用。但是&#xff0c;随着应用程序越来越复杂&#xff0c;需要等待一些操作时&#xff0c;Python中的等待传统上会导致性能下降。在这篇文章中&#xff0c;我们将深入了…

可持续能源技术改变世界

文章目录 一、你在工作或生活中接触过可持续能源技术吗&#xff1f;可以分享下你的经历与看法。二、你认为可持续能源技术的优势和挑战有哪些&#xff1f;三、你了解过可持续能源技术的应用现状吗&#xff1f;四、对于可持续能源技术真的否改变世界这个问题你怎么看&#xff1f…

ifconfig工具与驱动交互解析(ioctl)

Linux ifconfig&#xff08;network interfaces configuring&#xff09; Linux ifconfig命令用于显示或设置网络设备。ifconfig可设置网络设备的状态&#xff0c;或是显示目前的设置。同netstat一样&#xff0c;ifconfig源码也位于net-tools中。源码位于net-tools工具包中&am…

《消息队列高手课》课程笔记(七)

如何使用异步设计提升系统性能&#xff1f; 异步设计如何提升系统性能&#xff1f; 假设我们要实现一个转账的微服务 Transfer(accountFrom, accountTo, amount)&#xff0c;这个服务有三个参数&#xff1a;分别是转出账户、转入账户和转账金额。 这个例子的实现过程中&…

chatgpt赋能python:Python中如何反转字符串:三种简单方法

Python中如何反转字符串&#xff1a;三种简单方法 当我们在处理字符串时&#xff0c;有时需要将其反向排列。在Python中&#xff0c;这可以通过以下三种简单方法实现&#xff1a; 1. 使用内置的切片方法 在Python中&#xff0c;可以使用字符串的切片方法将其反转。这种方法非…

(浙大陈越版)数据结构 第三章 树(上) 3.4 小白专场:树的同构(PTA编程题讲解)

题意理解和二叉树表示 给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换变成T2&#xff0c;则称两棵树是“同构”的。 eg1&#xff1a;现请你判断如下两棵树&#xff08;左侧为T1&#xff0c;右侧为T2&#xff09;是否为同构树&#xff1f; 显然T1可以通过有限次左右孩子…

REST风格 -- SpringMVC入门保姆级教程(四)

文章目录 前言四、REST风格1.了解REST风格2.REST风格写法一般步骤3.REST风格快速开发4.REST风格中的注解5. 案例&#xff1a;基于REST风格页面数据交互 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。当然&#…

Redis高级篇 - 分布式缓存

分布式缓存 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题&#xff1a; 1.Redis持久化 Redis有两种持久化方案&#xff1a; RDB持久化AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file&#xff08;Redis数据备份文件&#xff09;&#xff0c…

iPad触屏笔哪个牌子好用?Apple Pencil的平替笔

从无纸化的广泛使用&#xff0c;电容笔成为无纸化中不可替代的一部分。但由于原装电容笔的昂贵&#xff0c;市面上的电容笔品牌众多&#xff0c;不知如何下手&#xff0c;今天给大家推荐几款好用又平价的Apple Pencil平替笔。顺便给不知道如何挑选电容笔的小伙伴科普一下电容笔…

车载网络测试 - CANCANFD - 基础篇_02

目录 七、与CAN总线相关的标准 1、ISO 11898,ISO16845 2、SAE J1939,ISO 11783,NMEA 2000,CANopen 3、ISO15765/ISO14229 4、ISO 17356/OSEK 5、CCP(CAN Calibration Protocol) 6、GMLAN,VWTP,FNOS,DCNet,MCNet 八、CAN总线的特点 九、CAN总线基本概念 七、与CAN总线相…

机器学习-4 决策树算法

决策树算法 算法概述分类算法与分类器决策树算法树模型决策树的原理决策树算法的关键决策树构造的基本思路 算法基本思想决策树的训练与测试三种经典的决策树生成算法基于信息增益的ID3算法基于信息增益率的C4.5算法C4.5算法C5.0算法 基于基尼系数的CART算法 算法流程算法关键问…

chatgpt赋能python:Python中的包

Python中的包 对于使用Python进行编程的开发者来说&#xff0c;包是一个非常重要的概念。包可以看作是一个包含了多个模块的文件夹&#xff0c;这些模块可以在代码中使用。通过使用Python中的包&#xff0c;开发者可以使代码更加模块化&#xff0c;提高代码的可维护性和可读性…

Emacs之git操作(一百零五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Apache Impala(1):Impala简介

1 Impala 基本介绍 impala 是 cloudera 提供的一款高效率的 sql 查询工具&#xff0c;提供实时的查询效果&#xff0c;官方测试性能比 hive 快 10 到 100 倍&#xff0c;其 sql 查询比 sparkSQL 还要更加快速&#xff0c;号称是当前大数据领域最快的查询 sql 工具&#xff0c…

小主机折腾记13

这个月折腾的事比较多&#xff0c;记个流水账 1.600g2mt加装wifi模块&#xff1b; 买了ngff转pcie的转接卡&#xff0c;发现竟然不能原生支持蓝牙&#xff0c;需要额外接一个4pin转9针usb的线&#xff0c;600g2mt是没有那种通用的usb9针口的…… 而内建蓝牙的转接卡网上也有卖&…

【项目】ROS下使用N100模块

本文主要记录如何使用WHEELTEC N100 模块。 之前的版本是CP2102串口芯片&#xff0c;而2022年5月之后的N100采用的是CH9102串口芯片。 一、修改串口号&#xff1a; 工具&#xff1a;链接&#xff1a;https://pan.baidu.com/s/13Pdq45_Z0ZRwuaNN0I84Cg 提取码&#xff1a;i6j…

《深入理解计算机系统(CSAPP)》第6章 存储器层次结构 - 学习笔记

写在前面的话&#xff1a;此系列文章为笔者学习CSAPP时的个人笔记&#xff0c;分享出来与大家学习交流&#xff0c;目录大体与《深入理解计算机系统》书本一致。因是初次预习时写的笔记&#xff0c;在复习回看时发现部分内容存在一些小问题&#xff0c;因时间紧张来不及再次整理…

【计算机网络详解】——应用层(学习笔记)

&#x1f4d6; 前言&#xff1a;应用层是计算机网络体系结构的最顶层&#xff0c;是设计和建立计算机网络的最终目的&#xff0c;也是计算机网络中发展最快的部分。在本文中&#xff0c;我们以一些经典的网络应用为例来学习有关网络应用的原理、协议和实现方面的知识。 目录 &a…