jdbc连接mysql数据库的详细步骤

2023-05-16

标题## jdbc连接mysql数据库

1.首先在项目根目录创lLib文件夹,放入jdbc驱动程序,然后Add As Library
在这里插入图片描述
2.建包
bean包:专门放置属性类
dao包: 进行数据操作的类
util包: 放工具类
test包: 测试类
在这里插入图片描述
正式开始

1.在bean包中写实体类:

package com.hopu.bean;
public class Member {
   private String name;
   private String pwd;
   private float score;
   private int rank;
    //无参
    public Member() {
    }
    //有参
    public Member(String name, String pwd, float score, int rank) {
        this.name = name;
        this.pwd = pwd;
        this.score = score;
        this.rank = rank;
    }
//get和set方法
    public String getName() {
        return name;
    }

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

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public float getScore() {
        return score;
    }

    public void setScore(float score) {
        this.score = score;
    }

    public int getRank() {
        return rank;
    }

    public void setRank(int rank) {
        this.rank = rank;
    }

    @Override
    public String toString() {
        return "Member{" +
                "name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                ", score=" + score +
                ", rank=" + rank +
                '}';
    }
}

对应的mysql数据库
在这里插入图片描述
2.在util包中的MemberUtil类写了连接数据库和释放资源两个方法:

package com.hopu.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class MemberUtil {
    //1.获取数据库的连接  2.释放资源
    //连接数据库的四大参数(也可以形成配置文件)
    public static String driver="com.mysql.cj.jdbc.Driver";//MySQL驱动程序的全类名
    public static String url="jdbc:mysql://127.0.0.1:3306/shop?useSSL=false&serverTimezone=UTC";
    public static String username="root";
    public static String password="678";
    public static Connection con=null;

    //
    public static Connection getCon(){
        try{
            //1.加载驱动包
            Class.forName(driver);
            //2.使用驱动管理器来获得连接---获得一个数据库连接对象Connection
            con = DriverManager.getConnection(url, username, password);
        }catch (Exception e){
            e.printStackTrace();
        }
        return con;
    }

    public static void myClose(ResultSet rs, PreparedStatement pstm, Connection con){
        //回收资源
        try{
            if(rs!=null){
                rs.close();
            }
            if(pstm!=null){
                pstm.close();
            }
            if(con!=null){
                con.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    public static void myClose( PreparedStatement pstm,Connection con){
        //
        try{
            if(pstm!=null){
                pstm.close();
            }
            if(con!=null){
                con.close();
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

getCon()方法返回 Connection 对象,myClose()方法无返回值。

dao包里面写增删改查四种方法,其中sql语句一定要写对,也不要有多余的空格。

package com.hopu.dao;
import com.hopu.bean.Member;
import com.hopu.util.MemberUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

public class MemberDao {
    private Connection con=null;//连接器
    private PreparedStatement pstm=null;//sql执行器对象
    private ResultSet rs=null;//结果集对象
    private int n=0;//更新影响的行数。
    //添加
    public int add(Member member){
        try{
            //1.获取数据库的连接
             con = MemberUtil.getCon();
            //2.获取带参数的sql语句执行器
            String sql="insert into member values(?,?,?,?)";
            //使用Connection创建PreparedStatement语句对象---PreparedStatement对象可以执行sql语句
            pstm = con.prepareStatement(sql);
            //3.给pstm的?赋值
            pstm.setObject(1,member.getName());
            pstm.setObject(2,member.getPwd());
            pstm.setObject(3,member.getScore());
            pstm.setObject(4,member.getRank());
            //4.执行sql
             n = pstm.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();

        }finally {
            //调用MemberUtil中的myClose方法进行资源的释放
            MemberUtil.myClose(pstm,con);
        }
return n;

    }
    //删
    public int delete(int rank){
        try{
            //
            con = MemberUtil.getCon();
            //
            String sql="delete from member where `rank`=?";
            pstm = con.prepareStatement(sql);
            pstm.setObject(1,rank);
            n = pstm.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //调用MemberUtil中的myClose方法进行资源的释放
            MemberUtil.myClose(pstm,con);
        }
       return n;

    }
    //改
    public int update(Member member){
        try{
             con = MemberUtil.getCon();
             String sql="update member set name=?,pwd=?,score=? where `rank`=?";
             pstm = con.prepareStatement(sql);
             pstm.setObject(1,member.getName());
            pstm.setObject(2,member.getPwd());
            pstm.setObject(3,member.getScore());
            pstm.setObject(4,member.getRank());
            n = pstm.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();

        }finally {
            //调用MemberUtil中的myClose方法进行资源的释放
            MemberUtil.myClose(pstm,con);
        }
        return n;
    }
    //查
    public ArrayList<Member> selectAll(){
        ArrayList<Member> list = new ArrayList<>();
        try{
             con = MemberUtil.getCon();
             String sql="select * from member";
             pstm = con.prepareStatement(sql);
             rs = pstm.executeQuery();
           //是查询结果集,指针用来操作数据。指针默认指向列标题,要想徼作数据,需要向下移动
             while(rs.next()){
                 //获取数据库表中当前每一个字段的值并存入到member对象中
                 Member member = new Member();
                 member.setName(rs.getString("name"));
                 member.setPwd(rs.getString("pwd"));
                 member.setScore(rs.getFloat("score"));
                 member.setRank(rs.getInt("rank"));
                 //把Member对象存入到集合中
                 list.add(member);

             }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //调用MemberUtil中的myClose方法进行资源的释放
            MemberUtil.myClose(rs,pstm,con);
        }
return list;

    }

    //单查
    public Member selectById(int rank){
        Member member = new Member();
        try{
            //1.获取数据库连接
             con = MemberUtil.getCon();
            //2.获取SQL的执行器
             String sql="select * from member where `rank`=?";
             pstm = con.prepareStatement(sql);
             pstm.setObject(1,rank);
             //执行全查询
             rs = pstm.executeQuery();
            //获取结果集---(一行数据就是一个Member对象)
            if(rs.next()){
                member.setName(rs.getString("name"));
                member.setPwd(rs.getString("pwd"));
                member.setScore(rs.getFloat("score"));
                member.setRank(rs.getInt("rank"));
            }

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //调用MemberUtil中的myClose方法进行资源的释放
            MemberUtil.myClose(rs,pstm,con);
        }
return member;
    }

}

4.test测试类中 因为写一个小功能就要写一个类,写一个main方法,所以我们直接在需要的地方打出@Test,注意要自己打这个是没有提示的,然后按下Alt + Enter 选择导入JUnit4

package com.hopu.test;
import com.hopu.bean.Member;
import com.hopu.dao.MemberDao;
import org.junit.Test;
import java.util.ArrayList;
public class Test01 {
    //!!!!!!!!!!!!!!!!!!!!!!!!!sql语句中不要有空格。
    //添加
    @Test
    public void add(){
        MemberDao memberDao = new MemberDao();
        Member member = new Member();
        member.setName("小五");
        member.setPwd("456");
        member.setScore(56);
        member.setRank(2);
        int n = memberDao.add(member);
        if(n>0){
            System.out.println("添加成功!");
        }else{
            System.out.println("添加失败!");

        }
    }

    //删除
    @Test
    public void delete(){
        MemberDao memberDao = new MemberDao();
        int n = memberDao.delete(2);
        if(n>0){
            System.out.println("删除成功!");
        }else{
            System.out.println("删除失败!");
        }
    }

    //改
    @Test
    public void update(){
        MemberDao memberDao = new MemberDao();
        //1.首先查询当前数据
        Member member = memberDao.selectById(2);
        //System.out.println(member);
        //2.再修改某些字段值
        member.setName("花花");
        //3.执行更新
        int n = memberDao.update(member);
         if(n>0){
             System.out.println("修改成功!");
         }else{
             System.out.println("修改失败!");
         }

    }

    //查
     @Test
    public  void selectAll(){
        MemberDao memberDao = new MemberDao();
        ArrayList<Member> members = memberDao.selectAll();
        for (Member member : members) {
            System.out.println(member);
        }
        
    }

}

mysql数据库的运行结果:
在这里插入图片描述
显示运行成功,数据库发生变化,删改查一样运行对应的方法。
在这里插入图片描述
删除:
在这里插入图片描述
修改:
在这里插入图片描述
全查:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jdbc连接mysql数据库的详细步骤 的相关文章

随机推荐

  • Windows10 系统安装微软商店(ms-windows-store)

    在下载日历是显示没有应用 xff0c 应从ms windows store下载 在此记录windows10安装ms windows store步骤 步骤如下 xff1a 1 使用win 43 x打开菜单后 xff0c 选择powershel
  • 谷歌浏览器打开本地堡垒机应用发布服务器cmd的方法

    齐治堡垒机是业界中较为出名的堡垒机 xff0c 但是依旧存在一些bug 堡垒机是通过应用发布服务器访问web的 xff0c 如果托管了web且堡垒机管理员没有加固应用发布服务器本地策略 xff0c 我们可以通过浏览器调用本地的cmd进行一系
  • 2022复盘&2023计划

    个人成长计划 2022复盘 自媒体 B站 4月10日成为UP主 发布了35个视频 播放量13 6w 累计直播431h 粉丝量1160 获赞量2058 公众号 1053关注 36篇内容 小红书 136粉丝 1167赞 知乎 85关注 48赞
  • 使用集简云将UpTimer同步到Notion

    使用UpTimer同步到Notion 对于集简云我们应当非常熟悉了 xff0c 之前讲过很多流程啦 利用集简云将Notion数据库更新订阅到Outlook和微信 1 干货分享 集简云 2步轻松定制个人RSS阅读器 高效获取信息 2 释放双手
  • MySQL分组查询语句

    文章目录 1 需求2 表结构与部分数据3 查询语句4 结果5 前端显示 1 需求 根据账单表 tb bookkeeping 中的用户ID user id xff0c 按时间倒序查询该用户所在房间所有支出 xff08 bk type 61 0
  • 使用pyinstaller将具有多个python文件的项目打包为exe(含依赖库)

    1 将需要打包有python文件放到一个文件夹 xff0c 例如下图所示的Demo文件夹 xff0c 其中ClickEveryDay py为主文件 xff0c telegram ico为图标文件 2 生成主函数对应的spec文件 命令 xf
  • 在win10下使用PowerShell批量替换文件名

    步骤 通过PowerShell ISE来创建扩展名为 ps1的脚本文件 具体操作过程参考 xff1a https www ithome com html win10 250196 htm编辑新建的 ps1文件 xff0c 举个栗子进行简单说
  • Kotlin笔记15——字符串转数字类型

    前言 在使用Java编程语言开发的 xff0c 我们会经常遇到字符串转数字的需求 那么在Kotlin中是怎么实现的呢 xff1f 接下来跟大家分享一下 字符串转数字 首先我们必须保证字符串是数字类型 xff0c 不能出现a3这种数字与字符混
  • 使用gitLab过程中遇到的一些问题

    之前由于疫情 xff0c 电脑放在公司 xff0c 有一些数据需要其他同事帮忙提交 xff0c 怎知居然连了他的git账号 xff0c 搞得我自己代码提交拉取老有问题 xff0c 一开始没有意识到是这个原因 xff0c 知道打开了自己git
  • 【Micropython】肝货~使用USB_VCP通过USB串口与树莓派或PC端通信

    为什么要使用USB VCP xff1f Micropython有很多串口 xff0c 例如PYboard xff0c 有5个串口可以使用 xff0c 但是 xff0c 平时我们在做一些项目的时候 xff0c 需要使用的引脚较多 xff0c
  • ROS中安装配置并使用VScode(持续更新)

    1 为什么使用VScode VSCode 全称 Visual Studio Code xff0c 是微软出的一款轻量级代码编辑器 xff0c 免费 开源而且功能强大 它支持几乎所有主流的程序语言的语法高亮 智能代码补全 自定义热键 括号匹配
  • pip install airsim问题

    直接使用pip install airsim安装airsim包会失败 airsim C Users DELL gt pip install airsim Collecting airsim Using cached airsim 1 8 1
  • vm虚拟机无法拖拽文件和复制粘贴解决办法

    sudo apt install open vm tools sudo apt install open vm tools desktop
  • PX4和Airsim通信操作流程

    坑真几把多 先在Windows上安装UE4和Airsim不再赘述 xff0c 官网都有 虚拟机或其他计算机安装好ubuntu并安装PX4 1 安装PX4的ROS相关包 xff08 mavros xff09 1 第一种 xff1a 进入官网安
  • mavros安装流程(超简单)

    只适用于Ubuntu18 04 在Ubuntu中新建一个空白文本 xff0c 命名为123 sh bin bash Bash script for setting up ROS Melodic with Gazebo 9 developme
  • 安装WSL2+Ubuntu18.04(慢慢更新记录)

    1 安装WSL和Ubuntu WSL官网在此 安装 WSL Microsoft Learn Windows下CMD xff0c 先安装WSL2 wsl install 然后进入Microsoft Store xff0c 搜索Ubuntu然后
  • -bash: ./Setup.sh: Permission denied

    sudo chmod 777 xxx
  • Linux 给文件夹或者文件添加权限

    chmod R 777 文件夹 参数 R是递归的意思 777表示开放所有权限 chmod 777 test sh chmod 43 x 某文件 如果给所有人添加可执行权限 xff1a chmod a 43 x 文件名 xff1b 如果给文件
  • Postman使用笔记——Postman发送get请求

    前言 在实际的开发当中 xff0c 我们经常用到get或者post请求 在这篇博客里面分享一下 xff0c 如何在Postman中发送get请求 发送get请求 1 在Postman工作空间选定get请求 图中我们可以看到很多请求方式 xf
  • jdbc连接mysql数据库的详细步骤

    标题 jdbc连接mysql数据库 1 首先在项目根目录创lLib文件夹 xff0c 放入jdbc驱动程序 xff0c 然后Add As Library 2 建包 bean包 xff1a 专门放置属性类 dao包 xff1a 进行数据操作的