JDBC 学习笔记+代码整理

news2024/11/26 20:31:49

Tip

Idea自带可视界面👉MySQL 图形化界面-CSDN博客

Idea2022无add Framework support选项👉最新版IDEA:Add web Framework Support步骤/构建JavaWeb项目步骤_idea add framework support-CSDN博客

基本步骤

1.加载驱动包Driver

2.建立与数据库的连接Connection DriverManager

3.发送SQL语句Statement

4.接收数据库返回结果executeUpdate()/executeQuery()

5.解析结果ResultSet

6.关闭连接close()

加载驱动包Driver

package com.qf.JDBC;

public class JdbcDriver {
    static {
//        1.加载驱动类
        try {
//            反射获得驱动类Driver
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
}

 创建和数据库的连接

package com.qf.JDBC;

import com.mysql.cj.jdbc.Driver;
import java.sql.*;

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

public class JdbcDriver {
    private static String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
//    jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8   5
//    jdbc:mysql://localhost:3306/student?serverTimezone=UTC  8
    private static String username="root";//自己的用户名
    private static String pass="123456";//自己的密码

    static {
//        1.加载驱动类
        try {
//            反射获得驱动类Driver
//            com.mysql.cj.jdbc.Driver 7
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

//    2.获取连接
    public static Connection getConn() {
        Connection conn=null;
        try {
            conn = DriverManager.getConnection(url, username, pass);
            System.out.println("连接成功");
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return conn;
    }

    public static void main(String[] args) {
        getConn();
    }
}

发送Sql语句

例子:增加操作

package com.qf.JDBC;

import com.mysql.cj.jdbc.Driver;
import java.sql.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Stack;

public class JdbcDriver {
    private static String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
//    jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8   5
//    jdbc:mysql://localhost:3306/student?serverTimezone=UTC  8
    private static String username="root";
    private static String pass="123456";

    static {
//        1.加载驱动类
        try {
//            反射获得驱动类Driver
//            com.mysql.cj.jdbc.Driver 7
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

//    2.获取连接
    public static Connection getConn() {
        Connection conn=null;
        try {
            conn = DriverManager.getConnection(url, username, pass);
            System.out.println("连接成功");
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return conn;
    }

//    增加同学
    public static void addDept(){
        String sql="insert into student.table values('zt','男',20)";
//        获得连接
        try {
            Statement st= getConn().createStatement();
            st.executeUpdate(sql);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        addDept();
    }
}

例子:查询所有同学的信息

package com.qf.JDBC;

import com.mysql.cj.jdbc.Driver;
import com.qf.JDBC.pojo.table;

import javax.swing.*;
import java.sql.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Stack;

public class JdbcDriver {
    private static String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
//    jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8   5
//    jdbc:mysql://localhost:3306/student?serverTimezone=UTC  8
    private static String username="root";
    private static String pass="123456";

    static {
//        1.加载驱动类
        try {
//            反射获得驱动类Driver
//            com.mysql.cj.jdbc.Driver 7
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

//    2.获取连接
    public static Connection getConn() {
        Connection conn=null;
        try {
            conn = DriverManager.getConnection(url, username, pass);
            System.out.println("连接成功");
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return conn;
    }

    //查询所有学生信息
    public static ArrayList<table> queryAll(){
        ArrayList<table> list=new ArrayList<>();
        String sql="select * from student.table";
//        获得连接
        Connection conn=getConn();
        Statement st=null;
        try {
            st=conn.createStatement();
            ResultSet r=st.executeQuery(sql);
            while (r.next()){
                table t=new table(r.getString(1),r.getString(2),r.getInt("age"));//分别是第一列 第二列 age列
                list.add(t);
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }finally {
            try {
                st.close();//先打开的流后关闭
                conn.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        return list;
    }

    public static void main(String[] args) {
        ArrayList<table> arrayList=queryAll();
        for (table a:arrayList) {
            System.out.println(a);
        }
    }

}
package com.qf.JDBC.pojo;

import java.io.Serializable;

public class table implements Serializable {//实体类 属性与表一致
    private String name;
    private String gender;
    private int age;

    public table(String name, String gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;
    }

    public table() {
    }

    public String getName() {
        return name;
    }

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

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "table{" +
                "name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                ", age=" + age +
                '}';
    }
}

例子:修改和删除

继续用上面的table实体类

package com.qf.JDBC;

import com.mysql.cj.jdbc.Driver;
import com.qf.JDBC.pojo.table;

import javax.swing.*;
import java.sql.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Stack;

public class JdbcDriver {
    private static String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
//    jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8   5
//    jdbc:mysql://localhost:3306/student?serverTimezone=UTC  8
    private static String username="root";
    private static String pass="123456";

    static {
//        1.加载驱动类
        try {
//            反射获得驱动类Driver
//            com.mysql.cj.jdbc.Driver 7
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

//    2.获取连接
    public static Connection getConn() {
        Connection conn=null;
        try {
            conn = DriverManager.getConnection(url, username, pass);
            System.out.println("连接成功");
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return conn;
    }


//    修改部门
        public static void updateDept(){
        String sql="update student.table set age=21 where name='zt'";
//        获得连接
        try {
            Statement st= getConn().createStatement();
            st.executeUpdate(sql);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

//删除
    public static void deleteDept(){
        String sql="delete from student.table where name='xx'";
//        获得连接
        try {
            Statement st= getConn().createStatement();
            st.executeUpdate(sql);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        updateDept();
        deleteDept();
    }
}

JDBC实现分层处理

package com.xxxx.JDBC;//根包

common 公共包(所有模块共用的类,数据库连接类,分页处理)
pojo(entiy)实体类的包(和表一一对应的类叫做实体类,Dept Emp)
test 测试包
dao 数据访问对象(数据访问层,对数据表增删改查的代码)
service 业务层(业务逻辑)

目录

DBConn

package com.qf.JDBC.common;

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

public class DBConn {
    private static String url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
    //    jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf-8   5
//    jdbc:mysql://localhost:3306/student?serverTimezone=UTC  8
    private static String username="root";
    private static String pass="123456";

    static {
//        1.加载驱动类
        try {
//            反射获得驱动类Driver
//            com.mysql.cj.jdbc.Driver 7
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    //    2.获取连接
    public static Connection getConn() {
        Connection conn=null;
        try {
            conn = DriverManager.getConnection(url, username, pass);
            System.out.println("连接成功");
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return conn;
    }
}

StuDao

package com.qf.JDBC.dao;

import com.qf.JDBC.pojo.Student;

public interface StuDao {
    void addStu(Student s);
    void updateStu(Student s);
    void delStu(Student s);

}

StuDaoImpl

package com.qf.JDBC.dao;

import com.qf.JDBC.common.DBConn;
import com.qf.JDBC.pojo.Student;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;

public class StuDaoImpl extends DBConn implements StuDao{

    @Override
    public void addStu(Student s) {
        String sql="insert into student.table(name,gender,age) values (?,?,?)";
//        获得连接
        Connection conn =DBConn.getConn();
        PreparedStatement st=null;
        try {
            st= getConn().prepareStatement(sql);
            st.setString(1,s.getName());
            st.setString(2,s.getGender());
            st.setInt(3,s.getAge());
            //执行语句
            int r= st.executeUpdate();
            if(r>=1){
                System.out.println("新增成功");
            }else {
                System.out.println("新增失败");
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }finally {
            try {
                st.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
            try {
                conn.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }

    @Override
    public void updateStu(Student s) {

    }

    @Override
    public void delStu(Student s) {

    }
}

Student

package com.qf.JDBC.pojo;

public class Student {
    private String name;
    private String gender;
    private int age;

    public Student(String name, String gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;
    }

    public Student() {
    }

    public String getName() {
        return name;
    }

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

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

StuService

package com.qf.JDBC.service;

import com.qf.JDBC.dao.StuDao;
import com.qf.JDBC.dao.StuDaoImpl;
import com.qf.JDBC.pojo.Student;

public class StuService {
    public static void main(String[] args) {
        StuDao stuDao=new StuDaoImpl();
        stuDao.addStu(new Student("张三","男",25));
    }
}

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

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

相关文章

[TensorFlow-Lite][深度学习]【快速简介-1】

前言&#xff1a; 很多场景下面我们需要需要把我们的深度学习模型部署到Android,IOS 手机上面. Google 通过TensorFlow Lite 提供了对应的解决方案. 目录&#xff1a; 端侧部署优点 硬件支持 性能 应用案例 一 端侧部署优点 1; 很多场景下面&#xff1a; 无网络,数据无法…

维护和管理LDAP之OpenDJ

目录 基本介绍 服务专有名词 安装 命令行工具 密码管理 重置管理员密码 管理服务器进程 管理索引 如何搜索 管理索引 管理目录数据 测试数据 导出数据 导入数据 LDIF文件数据查看和比较 数据存储-Backends 配置连接 开启 HTTP/HTTPS连接 使用 REST访问 -open…

如何学习和提升SQL

资料来源于腾讯技术直播&#xff0c;只作为学习记录&#xff0c;如有侵权&#xff0c;请联系作者进行删除

文献阅读:通过高通量原位成对测序实现亚细胞分辨率的空间多组学

文献介绍 文献题目&#xff1a; Spatial multi-omics at subcellular resolution via high-throughput in situ pairwise sequencing 研究团队&#xff1a; 曹罡&#xff08;深圳理工大学&#xff09;、戴金霞&#xff08;华中农业大学&#xff09; 发表时间&#xff1a; 2024…

【算法 - 哈希表】两数之和

这里写自定义目录标题 两数之和题目解析思路解法一 &#xff1a;暴力枚举 依次遍历解法二 &#xff1a;使用哈希表来做优化 核心逻辑为什么之前的暴力枚举策略不太好用了&#xff1f;所以&#xff0c;这就是 这道题选择 固定一个数&#xff0c;再与其前面的数逐一对比完后&…

【Portswigger 学院】文件上传

教程和靶场来源于 Burpsuite 的官网 Portswigger&#xff1a;File upload vulnerabilities - PortSwigger 原理与危害 很多网站都有文件上传的功能&#xff0c;比如在个人信息页面允许用户上传图片作为头像。如果网站应用程序对用户上传的文件没有针对文件名、文件类型、文件内…

2007年下半年软件设计师【下午题】试题及答案

文章目录 2007年下半年软件设计师下午题--试题2007年下半年软件设计师下午题--答案2007年下半年软件设计师下午题–试题

基于图像处理的滑块验证码匹配技术

滑块验证码是一种常见的验证码形式&#xff0c;通过拖动滑块与背景图像中的缺口进行匹配&#xff0c;验证用户是否为真人。本文将详细介绍基于图像处理的滑块验证码匹配技术&#xff0c;并提供优化代码以提高滑块位置偏移量的准确度&#xff0c;尤其是在背景图滑块阴影较浅的情…

C++入门 容器适配器 / stack queue模拟实现

目录 容器适配器 deque的原理介绍 stack模拟实现 queue模拟实现 priority_queue模拟实现 仿函数 容器适配器 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总 结)&#xff0c;该种模式是将一个类的接口转换成客户希望…

Rufus 制作启动盘 | 便携的工作空间

唠唠闲话 最近服务器硬盘故障多&#xff0c;在修复过程中&#xff0c;学习了一些操作&#xff0c;这里做个记录。本期主要介绍 U盘启动盘的制作&#xff0c;以及持久化存储。 U 盘启动盘 镜像选择 Ubuntu 的版本命名遵循 “Adjective Animal” 的模式&#xff0c;即 “形容…

数据驱动制造业升级,免费可视化工具成关键

制造业作为国民经济的支柱产业&#xff0c;正经历着前所未有的变革。数据&#xff0c;作为这场变革的核心驱动力&#xff0c;其重要性不言而喻。然而&#xff0c;面对海量且复杂的数据&#xff0c;如何高效、直观地将其转化为有价值的洞察&#xff0c;成为了众多制造企业亟待解…

C++ 栈-队列-优先级队列

目录 1 栈 2 队列 3 deque 介绍 4 优先级队列 5 反向迭代器 栈也是我们在C语言就模拟实现过的一种数据结构&#xff0c;在C中&#xff0c;栈其实和我们前面模拟实现过的string、vector等容器有一点区别&#xff0c;站起是不是容器&#xff0c;而是一种容器适配器&#xff0c;我…

【前端项目笔记】9 数据报表

数据报表 效果展示&#xff1a; 在开发代码之前新建分支 git checkout -b report 新建分支report git branch 查看分支 git push -u origin report 将本地report分支推送到云端origin并命名为report 通过路由的形式将数据报表加载到页面中 渲染数据报表基本布局 面包屑导航…

总结一下 .NET FrameWork 和 .NET Core 创建的项目的不同点

前言 从 Visual Studio 2022 开始&#xff0c;微软开始淡化 .NET Framework 的概念&#xff0c;在项目向导中&#xff0c;只有使用带 “.NET Framework” 的项目模板创建的才是 .NET Framework 项目&#xff0c;使用其他模板创建的都是 .NET Core 项目 比如&#xff0c;如果你…

【数据结构】06.栈队列

一、栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out)的原则。 压栈&#…

数据结构--单链表实现

欢迎光顾我的homepage 前言 链表和顺序表都是线性表的一种&#xff0c;但是顺序表在物理结构和逻辑结构上都是连续的&#xff0c;但链表在逻辑结构上是连续的&#xff0c;而在物理结构上不一定连续&#xff1b;来看以下图片来认识链表与顺序表的差别 这里以动态顺序表…

《梦醒蝶飞:释放Excel函数与公式的力量》8.8 STDEVP函数

8.8 STDEVP函数 STDEVP函数是Excel中用于计算总体数据的标准偏差的函数。标准偏差是统计学中的一个重要指标&#xff0c;用于衡量数据集中各数值偏离平均值的程度。总体标准偏差考虑了整个数据集&#xff0c;而不是样本。 8.8.1 函数简介 STDEVP函数用于返回总体数据的标准偏…

Java实现日志全链路追踪.精确到一次请求的全部流程

广大程序员在排除线上问题时,会经常遇见各种BUG.处理这些BUG的时候日志就格外的重要.只有完善的日志才能快速有效的定位问题.为了提高BUG处理效率.我决定在日志上面优化.实现每次请求有统一的id.通过id能获取当前接口的全链路流程走向. 实现效果如下: 一次查询即可找到所有关…

前端面试题13(API请求方法)

在前端JavaScript中&#xff0c;进行API请求主要可以通过几种方式来实现&#xff0c;最常见的是使用XMLHttpRequest&#xff08;较旧的方法&#xff09;、fetch&#xff08;现代浏览器推荐方法&#xff09;以及使用第三方库如axios或jQuery.ajax等。 1. XMLHttpRequest 这是最…

MPI hello world SSH 免密互联

目标&#xff1a; 我们想实现2台主机免密互联&#xff0c;将MPI Hello World跑起来 假设hostname是node01,node02,&#xff08;Linux shell窗口一般是UserNameHostName&#xff0c;node1和node2一定要和HostName一样&#xff09; hostname是/etc/hosts中的配置&#xff0c;如下…