模板:JDBC 连接数据库并实现 CRUD

news2024/11/15 10:57:08

目录

前期准备:

1. 连接数据库

1.1 第一种

 1.2 第二种

2. 增加

3. 修改

4. 删除

5. 查询

5.1 查询某个记录

5.2 查询单列数据


使用时,直接复制再修改一些数据即可;

声明:在对文件/变量命名时,没有做到见名知意,后续会对代码改进,实在抱歉(不会被打死吧!);

前期准备:

参考详细演示部分:CSDNicon-default.png?t=O83Ahttps://mp.csdn.net/mp_blog/creation/editor/140002021

1. 连接数据库
1.1 第一种
import java.sql.*;

public class JdbcTest {//记得类名与文件名保持一致
    //1.加载jdbc连接mysql的驱动
    public final static String driver="com.mysql.cj.jdbc.Driver";
    //2.连接MySQL数据库的地址
    public final static String url="jdbc:mysql://localhost:3306/shangguigu";//shangguigu为数据库名称
    //3.连接MySQL的用户名
    public final static String user="root";
    //4.连接MySQL的密码
    public final static String pwd="xxxxx";//输入自己数据库的密码
    //static 静态代码加载 jdbc 的驱动
    static {
        try{
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
    //连接MySQL的连接对象
    public static Connection getConn(){
        try{
            return DriverManager.getConnection(url,user,pwd);
        } catch (SQLException e){
            e.printStackTrace();
        }
        return null;
    }
    //关闭连接,保证MySQL资源的释放,能够充分利用资源
    public static void close(ResultSet rs, PreparedStatement ps,Connection conn){
        try{
            if (rs != null){
                rs.close();
            }
            if (ps != null){
                ps.close();
            }
            if (conn != null){
                conn.close();
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
    //验证
    public static void main(String[] args) {
        System.out.println(getConn());
    }
}

 结果为一个地址,则连接成功;

C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=14436:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Test\java _test\jdbc_test0917\out\production\jdbc_test0917;C:\Test\java _test\jdbc_test0917\lib\mysql-connector-java-8.0.26.jar" JdbcTest
com.mysql.cj.jdbc.ConnectionImpl@3023df74

进程已结束,退出代码0
 1.2 第二种

一般来说第一种较好;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
 
public class JavaCon {
    public static void main(String[] args) throws Exception {
        //注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
 
        //获取连接对象
        String url="jdbc:mysql://localhost:3306/shangguigu";//3306/ 后面是连接的数据库的名字
        String username="root";
        String password="xxxxxx";// 填入自己数据库的密码
        Connection connection= DriverManager.getConnection(url,username,password);
 
        //获取执行SQL语句的对象
        Statement statement=connection.createStatement();
 
        //编写Sql语句,执行并返回结果集
        String sql=" select emp_id,emp_name,emp_salary,emp_age from t_emp";// 输入要查询的字段
        ResultSet resultSet=statement.executeQuery(sql);
 
        //处理结果,遍历 resultSet 结果集
        while (resultSet.next()){  //根据字段的名字和数据类型进行修改
            int id=resultSet.getInt("emp_id");
            String na=resultSet.getString("emp_name");
            String salary=resultSet.getString("emp_salary");
            int age=resultSet.getInt("emp_age");
            System.out.println(id+"\t"+na+"\t"+salary+"\t"+age);
        }
 
        //释放资源(先开后关)
        resultSet.close();
        statement.close();
        connection.close();
    }
}

结果为查询表格的内容,则连接成功:

C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=3911:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Test\java _test\jdbc-test9\out\production\jdbc-test9;C:\Test\java _test\jdbc-test9\lib\mysql-connector-java-8.0.26.jar" JDBC.JavaCon
1	王	8.1	6
2	李	9.3	1
3	张	7.5	2
 
进程已结束,退出代码0

public class CRUD {//为方便接下来能够看懂,注意类名为 CRUD
    //一表一类
    private int emp_id;
    private String emp_name;
    private double emp_salary;
    private String emp_age;

    public int getEmp_id() {
        return emp_id;
    }

    public void setEmp_id(int emp_id) {
        this.emp_id = emp_id;
    }

    public String getEmp_name() {
        return emp_name;
    }

    public void setEmp_name(String emp_name) {
        this.emp_name = emp_name;
    }

    public double getEmp_salary() {
        return emp_salary;
    }

    public void setEmp_salary(double emp_salary) {
        this.emp_salary = emp_salary;
    }

    public String getEmp_age() {
        return emp_age;
    }

    public void setEmp_age(String emp_age) {
        this.emp_age = emp_age;
    }
}
2. 增加
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class CrudOperation {//为方便接下来能够看懂,注意类名
    //新增数据到数据库中,
    public boolean add(CRUD crud){
        //执行增删改查的SQL语句
        //连接MySQL
        Connection connection=JdbcTest.getConn();
        //预编译SQl执行
        String sql="insert into t_emp values (?,?,?,?)";//?相当于占位符,四个字段四个占位符
        try {
            PreparedStatement ps= connection.prepareStatement(sql);//根据要操作的表修改
            ps.setInt(1,crud.getEmp_id());
            ps.setString(2,crud.getEmp_name());
            ps.setDouble(3,crud.getEmp_salary());
            ps.setString(4,crud.getEmp_age());
            //执行操作更改
            boolean result=ps.executeUpdate()>0;
            //关闭数据库
            JdbcTest.close(null,ps,connection);
            return result;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
           // return false;
    }

    public static void main(String[] args) {
        CRUD cr = new CRUD();
        cr.setEmp_id(10);//根据要操作的表修改
        cr.setEmp_name("熊大");
        cr.setEmp_salary(70.8);
        cr.setEmp_age("7");
        CrudOperation cp = new CrudOperation();
        if(cp.add(cr)){
            System.out.println("保存学生成功");
        }else {
            System.out.println("保存学生失败");
        }
    }
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=4536:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Test\java _test\jdbc_test0917\out\production\jdbc_test0917;C:\Test\java _test\jdbc_test0917\lib\mysql-connector-java-8.0.26.jar" CrudOperation
保存学生成功

进程已结束,退出代码0

 再检查一下:

3. 修改
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Operation_Update {
    public boolean update(CRUD crud) {
        //执行增删改查的SQL语句
        //连接MySQL
        Connection connection = JdbcTest.getConn();
        //预编译SQl执行
        String sql = "update t_emp set emp_name=?,emp_salary=?,emp_age=? where emp_id=?";//?相当于占位符,四个字段四个占位符
        try {
            PreparedStatement ps = connection.prepareStatement(sql);//根据要操作的表修改
            //ps.setInt(1, crud.getEmp_id());
            ps.setString(1, crud.getEmp_name());
            ps.setDouble(2, crud.getEmp_salary());
            ps.setString(3, crud.getEmp_age());
            //多加一个修改的emp_id
            ps.setInt(4, crud.getEmp_id());
            //执行操作更改
            boolean result = ps.executeUpdate() > 0;
            JdbcTest.close(null, ps, connection);
            return result;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        //修改学生信息
        CRUD cr1 = new CRUD();
        cr1.setEmp_id(10);//根据要操作的表修改
        cr1.setEmp_name("熊二");
        cr1.setEmp_salary(90.8);
        cr1.setEmp_age("9");
        Operation_add cp1 = new Operation_add();
        if(cp1.update(cr1))
        {
            System.out.println("修改学生成功");
        }else
        {
            System.out.println("修改学生失败");
        }
    }
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=7593:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Test\java _test\jdbc_test0917\out\production\jdbc_test0917;C:\Test\java _test\jdbc_test0917\lib\mysql-connector-java-8.0.26.jar" Operation_Update
修改学生成功

进程已结束,退出代码0

 

4. 删除
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Operation_Delete {
    public boolean delete(int emp_id) {
        //执行增删改查的SQL语句
        //连接MySQL
        Connection connection = JdbcTest.getConn();
        //预编译SQl执行
        String sql = "delete from t_emp where emp_id=?";//?相当于占位符
        try {
            PreparedStatement ps = connection.prepareStatement(sql);
            ps.setInt(1,emp_id);//根据要操作的表修改
            //执行操作更改
            boolean result = ps.executeUpdate() > 0;
            //关闭数据库
            JdbcTest.close(null, ps, connection);
            return result;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
    //修改学生信息
    public static void main(String[] args) {
        Operation_Delete de=new Operation_Delete();
        if(de.delete(10)){
            System.out.println("删除学生成功");
        }else {
            System.out.println("删除学生失败");
        }
    }
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=10541:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Test\java _test\jdbc_test0917\out\production\jdbc_test0917;C:\Test\java _test\jdbc_test0917\lib\mysql-connector-java-8.0.26.jar" Operation_Delete
删除学生成功

进程已结束,退出代码0

 

5. 查询
5.1 查询某个记录
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Operation_Query {
    public CRUD query(int emp_id) {//主键或其他字段
        //执行增删改查的SQL语句
        //连接MySQL
        Connection connection = JdbcTest.getConn();
        //预编译SQl执行
        String sql = "select * from t_emp where emp_id=?";//?相当于占位符
        try {
            PreparedStatement ps = connection.prepareStatement(sql);
            ps.setInt(1, emp_id);//根据要操作的表修改
            //执行操作更改
            ResultSet rs = ps.executeQuery();
            //创建对象,返回
            CRUD cr = new CRUD();
            while (rs.next()) {
                cr.setEmp_id(rs.getInt(1));
                cr.setEmp_name(rs.getString(2));
                cr.setEmp_salary(rs.getDouble(3));
                cr.setEmp_age(rs.getString(4));
            }
            //关闭数据库
            JdbcTest.close(rs, ps, connection);
            return cr;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return  null;
    }

    public static void main(String[] args) {
        Operation_Query oq=new Operation_Query();
        CRUD cr2=oq.query(1);
        System.out.println(cr2.getEmp_id()+"\t"+cr2.getEmp_salary()+"\t"+cr2.getEmp_name()+"\t"+cr2.getEmp_age());
    }
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=1330:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Test\java _test\jdbc_test0917\out\production\jdbc_test0917;C:\Test\java _test\jdbc_test0917\lib\mysql-connector-java-8.0.26.jar" Operation_Query
1	8.1	王	6

进程已结束,退出代码0

5.2 查询单列数据
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;

public class Operation_Query_List {
        public List<CRUD> ger_all() {//主键或其他字段
            //执行增删改查的SQL语句
            //连接MySQL
            Connection connection = JdbcTest.getConn();
            //预编译SQl执行
            String sql = "select * from t_emp ";//?相当于占位符
            try {
                PreparedStatement ps = connection.prepareStatement(sql);
                //执行操作更改
                ResultSet rs = ps.executeQuery();
                //创建对象,返回
                List<CRUD> list = new ArrayList<CRUD>();
                while (rs.next()) {
                    CRUD cr = new CRUD();
                    cr.setEmp_id(rs.getInt(1));
                    cr.setEmp_name(rs.getString(2));
                    cr.setEmp_salary(rs.getDouble(3));
                    cr.setEmp_age(rs.getString(4));
//                    当前对象存储到 list 集合中
                    list.add(cr);
                }
                //关闭数据库
                JdbcTest.close(rs, ps, connection);
                return list;
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return  null;
        }

        public static void main(String[] args) {
            Operation_Query_List ql=new Operation_Query_List();
            List<CRUD> list = ql.ger_all();
            for (CRUD cr : list){
                System.out.println(cr.getEmp_id()+"=》"+ cr.getEmp_name());
            }
        }
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=5193:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Test\java _test\jdbc_test0917\out\production\jdbc_test0917;C:\Test\java _test\jdbc_test0917\lib\mysql-connector-java-8.0.26.jar" Operation_Query_List
1=》王
2=》李
3=》张

进程已结束,退出代码0

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

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

相关文章

鸿蒙设置,修改APP图标和名称

1、先看默认的图标和名称 2、打开项目开始设置自己需要的图标和名称 2.1找到 路径src\main\module.json5&#xff0c; 找到 abilities&#xff0c;下的&#xff0c;图标icon、名称label&#xff0c;label可以按住ctrl鼠标左键点击跳转 2.2先修改APP名称 1、ctrl鼠标左键点击…

Redis 字符串类型的典型应用场景

目录 1. 缓存功能 2. 计数功能 3. 共享会话&#xff08;Session&#xff09; 4. 手机验证码 前言 这里将详细介绍 Redis 字符串类型在实际开发中的几个典型应用场景&#xff0c;并提供相应的伪代码示例。 1. 缓存功能 场景描述 在许多Web应用中&#xff0c;数据通常需要…

【在Linux世界中追寻伟大的One Piece】验证TCP

目录 1 -> 验证TCP-windows作为client访问Linux 1.1 -> TCP client样例代码 1 -> 验证TCP-windows作为client访问Linux 1.1 -> TCP client样例代码 #include <winsock2.h> #include <iostream> #include <string>#pragma warning(disable : …

什么是Rspack?

Rspack 是一个基于 Rust 编写的高性能 JavaScript 打包工具&#xff0c;旨在提供与 webpack 生态系统的强兼容性&#xff0c;允许无缝替换 webpack&#xff0c;并提供极快的构建速度。 介绍 - Rspack 它由字节跳动 Web Infra 团队孵化&#xff0c;具有以下特点&#xff1a; 高…

JS渲染锻炼输入表单

前言 上篇文章为大家展现了好看的信息窗口&#xff0c;接下来我们跟着流程图看下一步 之前我们的带点击事件已经添加完毕&#xff0c;下一步就是当用户点击的时候&#xff0c;渲染锻炼形式&#xff0c;当然这是一个标签&#xff0c;可以提供给用户输入锻炼形式 实例 ● 我…

Codeforces Round 969 (Div. 1) C. Eri and Expanded Sets(线段树维护差分数组gcd+双指针+尺取)

题目 转化一下题意就是&#xff0c; 给定一个n(n<4e5)&#xff0c;代表数组a的长度&#xff0c; 求有多少区间&#xff0c;满足区间内两两差分后得到的新数组的gcd∈{0,1} 实际t(t<1e4)组样例&#xff0c;保证sumn不超过4e5 思路来源 乱搞acjiangly代码 题解 一个…

C/C++内存管理 ——

目录 五、C/C内存管理 1、C/C内存分布 2、C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 3、C内存管理方式 1.new/delete操作内置类型 2.new和delete操作自定义类型 4、operator new与operator delete函数 5、new和delete的实现原理 1.内置类…

SSM框架学习(四、SpringMVC实战:构建高效表述层框架)

目录 一、SpringMVC简介和体验 1.介绍 2.主要作用 3.核心组件和调用流程理解 4.快速体验 二、SpringMVC接收数据 1.访问路径设置 &#xff08;1&#xff09;精准路径匹配 &#xff08;2&#xff09;模糊路径匹配 &#xff08;3&#xff09;类和方法上添加 RequestMapp…

CSP-J 2024 入门组初赛第一轮初赛试题及答案解析

CSP-J 2024 入门组初赛第一轮初赛试题及答案解析 一、 单项选择题&#xff08;共15题&#xff0c;每题2分&#xff0c;共计30分&#xff1a;每题有且仅有一个正确选项&#xff09; 1 32 位 int 类型的存储范围是&#xff08; &#xff09; A -2147483647 ~ 2147483647 B -21…

【QGIS入门实战精品教程】6.1:QGIS根据属性条件查询数据(SQL表达式)

文章目录 一、字段过滤二、高级过滤(表达式)一、字段过滤 对于单个字段的查询,可以采用字段过滤,例如,从县区数据中,根据NAME字段,查找出县级市玉门市。操作为:右键县区→打开属性表: 点击左下角,选择name字段。 输入玉门市,回车,选择查找除的属性表记录,此时图斑…

汽车总线之----FlexRay总线

Introduction 随着汽车智能化发展&#xff0c;车辆开发的ECU数量不断增加&#xff0c;人们对汽车系统的各个性能方面提出了更高的需求&#xff0c;比如更多的数据交互&#xff0c;更高的传输带宽等。现如今人们广泛接受电子功能来提高驾驶安全性&#xff0c;像ABS防抱死系统&a…

计算机毕业设计之:基于深度学习的路面检测系统(源码+部署文档+讲解)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

【redis-02】深入理解redis中RBD和AOF的持久化

redis系列整体栏目 内容链接地址【一】redis基本数据类型和使用场景https://zhenghuisheng.blog.csdn.net/article/details/142406325【二】redis的持久化机制和原理https://zhenghuisheng.blog.csdn.net/article/details/142441756 如需转载&#xff0c;请输入&#xff1a;htt…

2025校招内推-招联金融

【投递方式】 直接扫下方二维码&#xff0c;或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus&#xff0c;使用内推码 igcefb 投递&#xff09; 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…

CentOS Stream 9部署docker,并开启API

1、安装docker &#xff08;1&#xff09;安装Docker的依赖项和存储库 sudo dnf install -y dnf-plugins-core sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo &#xff08;2&#xff09;安装Docker sudo dnf install -y docke…

0基础学习PyTorch——最小Demo

大纲 环境准备安装依赖 训练和推理训练生成数据加载数据TensorDatasetDataLoader 定义神经网络定义损失函数和优化器训练模型 推理 参考代码 PyTorch以其简洁直观的API、动态计算图和强大的社区支持&#xff0c;在学术界和工业界都享有极高的声誉&#xff0c;成为许多深度学习爱…

yum 集中式安装 LNMP

目录 安装 nginx 安装 mysql 安装 php 配置lnmp 配置 nginx 支持 PHP 解析 安装 nginx 修改yum源 将原本的yum源备份 vim /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/7/$basearch/ gpgcheck0 enable…

黎巴嫩BP机爆炸事件启示录:我国应加快供应链安全立法

据报道&#xff0c;当地时间9月17日下午&#xff0c;黎巴嫩首都贝鲁特以及黎巴嫩东南部和东北部多地都发生了BP机爆炸事件。当时的统计数据显示&#xff0c;爆炸造成9人死亡&#xff0c;约2800人受伤。9月18日&#xff0c;死亡人数上升到11人&#xff0c;受伤人数超过4000。 目…

14年数据结构

第一题 解析&#xff1a; 求时间复杂度就是看程序执行了多少次。 假设最外层执行了k次&#xff0c;我们看终止条件是kn&#xff0c;则&#xff1a; 有, 内层是一个j1到jn的循环&#xff0c;显然执行了n次。 总的时间复杂度是内层外层 答案选C。 第二题 解析&#xff1a; 一步一…

车辆行人转向意图状态检测系统源码分享

车辆行人转向意图状态检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of …