JDBC简单demo

本文介绍了JDBC(Java DataBase Connectivity)的基本使用,包括如何导入数据库驱动的jar包,JDBC编程的步骤,以及一个简单的数据库操作demo。示例中提到了DBUtil、UserInfo、UserInfoDAO和Control四个类的组织结构,用于实现数据库的连接与操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDBC全称是Java DataBase Connectivity,顾名思义是用来java用来连接数据库的。

用JDBC访问数据库需要第三方类,所以首先需要导入第三方类的jar包,不同的数据库提供了不同的jar包,可以在官网下载。
下载了jar,将其复制在项目lib文件下,然后添加到library。

JDBC编程步骤:

//1.通过反射加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.创建链接
Connection conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/people?useSSL=true&characterEncoding=utf8","root","root");
//3.编写sql语句
String sqlstr = "SELECT * FROM tb_userinfo"
//4.创建Statement或者PreparedStatement
PreparedStatement pstmt =conn.prepareStatement(sqlstr);  
//5.执行sql  
//6.处理结果集(增删改没有)
//7.关闭连接资源 (一定不要忘了)

避免编写重复代码,一般将获取连接和关闭连接资源封装起来。
表结构,表名tb_userinfo
在这里插入图片描述
demo结构如下:
在这里插入图片描述
DBUtil类

import java.sql.*;

public class DBUtil {
	//创建连接
    public static Connection getConnection(){
        Connection conn = null;
        try {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.创建连接		数据库名people
            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/people?								useSSL=true&characterEncoding=utf8","root","root");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
	//关闭连接资源
    public static void close(ResultSet rs, PreparedStatement pstmt, Connection con){
        try {
            if(rs!=null) {
                rs.close();
            }
            if(pstmt!=null) pstmt.close();
            if(con!=null) con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public static void close(PreparedStatement stmt, Connection con){
        close(null,stmt,con);
    }
    public static void close( Connection con) {
        close(null,con);
    }
}

UserInfo

public class UserInfo {
    private int userid;
    private String username;
    private int userage;

    public int getUserid() {  return userid; }
    public void setUserid(int userid) {  this.userid = userid; }
    public String getUsername() {  return username; }
    public void setUsername(String username) {   this.username = username; }
    public int getUserage() {  return userage;  }
    public void setUserage(int userage) { this.userage = userage;  }
    public UserInfo(int userid, String username, int userage) {
        this.userid = userid;
        this.username = username;
        this.userage = userage;
    }
    @Override
    public String toString() {
        return "("+userid+","+username+","+userage+")";
    }
}

UserInfoDAO类

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class UserInfoDAO {
	//查询全部
    public List<UserInfo> getUserInfo(){
        List<UserInfo> list = new ArrayList<>();

        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            conn = DBUtil.getConnection();                  //获取连接
            String sqlstr = "SELECT * FROM tb_userinfo";    //编写sql
            pstmt =conn.prepareStatement(sqlstr);           //预编译sql
            rs = pstmt.executeQuery();                 //执行sql命令获取结果集
            while(rs.next()){ //如果有数据,rs.next()返回true
                list.add(new UserInfo(rs.getInt("id"),rs.getString("name"),rs.getInt("age")));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            DBUtil.close(rs,pstmt,conn);
        }
        return list;
    }
	//添加记录
    public void insertUserInfo(UserInfo userInfo)  {
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            conn = DBUtil.getConnection();
            String sqlstr = "insert into tb_userinfo values(?,?,?)";
            pstmt = conn.prepareStatement(sqlstr);
            pstmt.setInt(1, userInfo.getUserid());
            pstmt.setString(2, userInfo.getUsername());
            pstmt.setInt(3, userInfo.getUserage());
            pstmt.execute();    //执行sql
        } catch (SQLException e){
            e.printStackTrace();
        }finally {
            DBUtil.close(pstmt,conn);
        }
    }
	//更新
    public void updateUserInfo(UserInfo userInfo) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            conn = DBUtil.getConnection();                  //获取连接
            String sqlstr =
            	"update tb_userinfo set name=? , age=? where id=?";    //编写sql
            pstmt =conn.prepareStatement(sqlstr);           //预编译sql
            pstmt.setInt(3,userInfo.getUserid());   //填坑,补?处的值
            pstmt.setString(1,userInfo.getUsername());
            pstmt.setInt(2,userInfo.getUserage());

            pstmt.executeUpdate();  //执行sql
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            DBUtil.close(pstmt,conn);
        }
    }
    //删除
    public void deleteUserInfo(int id) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            conn = DBUtil.getConnection();                  //获取连接
            String sqlstr = "delete from tb_userinfo where id=?";    //编写sql
            pstmt =conn.prepareStatement(sqlstr);           //预编译sql
            pstmt.setInt(1,id);   //填坑,补?处的值
            pstmt.executeUpdate();  //执行sql
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            DBUtil.close(pstmt,conn);
        }
    }
    public void deleteUserInfo(UserInfo userInfo){
        deleteUserInfo(userInfo.getUserid());
    }
}

Control类

public class Control {
    public void add(){
        UserInfoDAO uDao = new UserInfoDAO();
        Scanner scanner = new Scanner(System.in);
        System.out.print("输入要添加的id:");
        int id = scanner.nextInt();
        System.out.print("输入要添加的name:");
        String name = scanner.next();
        System.out.print("输入要添加的age:");
        int age = scanner.nextInt();
        UserInfo userInfo = new UserInfo(id,name,age);
        uDao.insertUserInfo(userInfo);
    }
    public void query(){
        UserInfoDAO uDao = new UserInfoDAO();
        List<UserInfo> userInfos = uDao.getUserInfo();
        System.out.println(userInfos.toString());
    }
    public void del(){
        UserInfoDAO uDao = new UserInfoDAO();
        Scanner scanner = new Scanner(System.in);
        System.out.print("输入要删除的id:");
        int id = scanner.nextInt();
        uDao.deleteUserInfo(id);
    }
    public void update(){
        UserInfoDAO uDao = new UserInfoDAO();
        Scanner scanner = new Scanner(System.in);
        System.out.print("输入要修改的id:");
        int id = scanner.nextInt();
        System.out.print("输入要修改的name:");
        String name = scanner.next();
        System.out.print("输入要修改的age:");
        int age = scanner.nextInt();
        UserInfo userInfo = new UserInfo(id,name,age);
        uDao.updateUserInfo(userInfo);
    }

    public static void main(String[] args) {
        Control c = new Control();
        Scanner scan = new Scanner(System.in);
        while(true){
            System.out.println("--------------------------");
            System.out.println("1.查询\n2.添加\n3.修改\n4.删除\n5.退出");
            System.out.print("选择你需要的操作:");
            int select = scan.nextInt();

            switch(select){
                case 1:c.query();
                    break;
                case 2:c.add(); c.query();
                    break;
                case 3:c.update(); c.query();
                    break;
                case 4: c.del();  c.query();
                    break;
                case 5: System.exit(0);
            }
        }
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值