使用JDBC实现增删改查(加入Druid德鲁伊连接池)

简介: 使用JDBC实现增删改查(加入Druid德鲁伊连接池)

使用JDBC实现增删改查(加入Druid(德鲁伊)连接池)


使用jdbc(加入数据库连接池Druid)完成Student表的增删改查四个功能的操作

  • 添加jdbc的连接驱动jar包
  • 添加druidjar包

1. 创建数据库

CREATE TABLE student(
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(50) NOT NULL,
    sex VARCHAR(10) DEFAULT 'man',
    age VARCHAR(5)
) CHARSET = utf8;

2. 编写Student.jsp实现类

package com.kaka.test_03;
public class Student {
   
   
    private int id;
    private String name;
    private String sex;
    private String age;
    public Student() {
   
   
        super();
    }
    public Student(int id, String name, String sex, String age) {
   
   
        super();
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
    public int getId() {
   
   
        return id;
    }
    public void setId(int id) {
   
   
        this.id = id;
    }
    public String getName() {
   
   
        return name;
    }
    public void setName(String name) {
   
   
        this.name = name;
    }
    public String getSex() {
   
   
        return sex;
    }
    public void setSex(String sex) {
   
   
        this.sex = sex;
    }
    public String getAge() {
   
   
        return age;
    }
    public void setAge(String age) {
   
   
        this.age = age;
    }
    @Override
    public String toString() {
   
   
        return "Student [id=" + id + ", name=" + name + ", sex=" + sex + ", age=" + age + "]";
    }    
}

3. 编写druid.properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db0711?useUnicode=true&characterEncoding=utf8
username=root
password=root
#初始化连接
initialSize=10
#最大连接数量
maxActive=30
#最小空闲连接
minIdle=5
#超时等待时间
maxWait=5000

4. 编写JDBCUtil.java工具类

package com.kaka.test_03;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

public class JDBCUtils {
   
   
    //获取数据库连接池
    private static DataSource ds;

    //提供静态代码块
    //加载配置文件
    static{
   
   
        try{
   
   
            //创建Properties集合类对象
            Properties prop = new Properties();
            //加载配置文件
            InputStream inputStream = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");

            //加载
            prop.load(inputStream);
            inputStream.close();

            //创建连接池对象
            ds = DruidDataSourceFactory.createDataSource(prop);

        } catch(IOException e){
   
   
            e.printStackTrace();
        }catch(Exception e){
   
   
            e.printStackTrace();
        }
    }
    //获取连接
    public static Connection getConnection() throws SQLException {
   
   
        return ds.getConnection() ;
    }

    //定义一个方法,获取存在的连接池
    public static DataSource getDataSource() {
   
   
        return ds ;
    }

    //释放资源
    public static void close(Statement stmt,Connection conn) {
   
   

        close(null,stmt,conn) ;
    }

    public static void close(ResultSet rs, Statement stmt, Connection conn) {
   
   
        if(rs!=null) {
   
   
            try {
   
   
                rs.close();
            } catch (SQLException e) {
   
   
                e.printStackTrace();
            }
        }

        if(stmt!=null) {
   
   
            try {
   
   
                stmt.close();
            } catch (SQLException e) {
   
   
                e.printStackTrace();
            }
        }

        if(conn!=null) {
   
   
            try {
   
   
                conn.close();
            } catch (SQLException e) {
   
   
                e.printStackTrace();
            }
        }
    }
}

5. 编写StuDaoImpl.java接口实现类

package com.kaka.test_03;
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 StuDaoImpl {
   
   
    private Connection conn = null;
    private PreparedStatement stmt = null;
    private ResultSet rs = null;

    //增加
    public int insert(Student stu){
   
   
        try {
   
   
            //数据库连接对象
            conn = JDBCUtils.getConnection();
            //编写SQL语句
            String sql = "insert into student (id,name,sex,age) values(?,?,?,?);";
            //预编译对象
            stmt = conn.prepareStatement(sql);
            //执行更新
            stmt.setInt(1, stu.getId());
            stmt.setString(2, stu.getName());
            stmt.setString(3, stu.getSex());
            stmt.setString(4, stu.getAge());

            int i = stmt.executeUpdate();
            return i;
        } catch (Exception e) {
   
   
            e.printStackTrace();
        } finally{
   
   
            JDBCUtils.close(stmt, conn);
        }
        return 0;
    }

    //删除
    public int delete (int id){
   
   

        try {
   
   
            conn = JDBCUtils.getConnection();
            String sql = "delete from student where id = ?";
            stmt = conn.prepareStatement(sql);
            //获取id
            stmt.setInt(1, id);
            return stmt.executeUpdate();
        } catch (SQLException e) {
   
   
            e.printStackTrace();
        }finally{
   
   
            JDBCUtils.close(stmt, conn);
        }
        return 0;
    }

    //修改
    public int update(Student stu){
   
   

        try {
   
   
            conn = JDBCUtils.getConnection();
            String sql = "update student set name = ?,sex = ?,age = ? where id = ?";
            stmt = conn.prepareStatement(sql);
            //执行更新
            stmt.setString(1, stu.getName());
            stmt.setString(2, stu.getSex());
            stmt.setString(3, stu.getAge());
            stmt.setInt(4, stu.getId());
            return stmt.executeUpdate();
        } catch (SQLException e) {
   
   
            e.printStackTrace();
        }finally{
   
   
            JDBCUtils.close(stmt, conn);
        }
        return 0;
    }

    //查询
    public List<Student> selectAll(){
   
   

         try {
   
   
            conn = JDBCUtils.getConnection();
            String sql = "select id,name,sex,age from student";
            List<Student> stuList = new ArrayList<Student>();
             stmt = conn.prepareStatement(sql);
             rs = stmt.executeQuery();
             while(rs.next()){
   
   
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String sex = rs.getString("sex");
                String age = rs.getString("age");
                Student  stu = new Student(id, name, sex, age);
               //每封装完一个对象,添加到集合当中
                stuList.add(stu);
            }
            return stuList;
        } catch (SQLException e) {
   
   
            e.printStackTrace();
        }finally {
   
   
            JDBCUtils.close(rs, stmt, conn);
        }
        return null;
    }
}

6. 编写Test.java测试类

package com.kaka.test_03;
import java.util.List;

public class Test {
   
   
    public static void main(String[] args) {
   
   

        StuDaoImpl sdi = new StuDaoImpl();
        //新增
        inserts(sdi);

        //删除
        deletes(sdi);

        //修改
        undates(sdi);

        //查询
        selects(sdi);
    }

    private static void selects(StuDaoImpl sdi) {
   
   
        List<Student> stuList = sdi.selectAll();
        stuList.forEach(System.out::println);
    }

    //修改
    private static void undates(StuDaoImpl sdi) {
   
   
        Student emp = new Student(1,"赵六","男","43");
        int result = sdi.update(emp);
        System.out.println(result);
    }


    //删除
    private static void deletes(StuDaoImpl sdi) {
   
   
        int result = sdi.delete(5);
        System.out.println(result);
    }

    //新增
    private static void inserts(StuDaoImpl sdi) {
   
   
        Student stu = new Student(5,"name4","man","23");
        int result = sdi.insert(stu);
        if(result > 0){
   
   
            System.out.println("success");
        }else{
   
   
            System.out.println("defeat");
        }
    }
}

7. 运行结果

7.1 查询数据

图片.png

7.2 新增数据

图片.png

7.3 删除数据

图片.png

7.4 修改数据

图片.png

目录
相关文章
|
4月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
483 77
|
4月前
|
XML 数据库 Android开发
Android数据库的使用(增删改查)
本文介绍了一个简单的数据库操作Demo,包含创建数据库、增删改查功能。通过5个按钮分别实现创建数据库、插入数据、删除数据、更新数据和查询数据的操作。代码结构清晰,适合初学者学习Android SQLite数据库基础操作。
120 5
|
4月前
|
数据库 Android开发 开发者
Android常用的room增删改查语句(外部数据库)
本文分享了将一个原生数据库驱动的单词APP重构为使用Room库的过程及遇到的问题,重点解决了Room中增删改查的常用语句实现。文章通过具体示例(以“forget”表为例),详细展示了如何定义实体类、Dao接口、Database类以及Repository和ViewModel的设计与实现。同时,提供了插入、删除、更新和查询数据的代码示例,包括模糊查询、分页加载等功能。此外,针对外部数据库导入问题,作者建议可通过公众号“计蒙不吃鱼”获取更多支持。此内容适合有一定Room基础的开发者深入学习。
152 0
Android常用的room增删改查语句(外部数据库)
|
10月前
|
XML Java 数据库连接
性能提升秘籍:如何高效使用Java连接池管理数据库连接
在Java应用中,数据库连接管理至关重要。随着访问量增加,频繁创建和关闭连接会影响性能。为此,Java连接池技术应运而生,如HikariCP。本文通过代码示例介绍如何引入HikariCP依赖、配置连接池参数及使用连接池高效管理数据库连接,提升系统性能。
188 5
|
6月前
|
SQL druid Oracle
【YashanDB知识库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIER start异常
客户Java日志中出现异常,影响Druid的merge SQL功能(将SQL字面量替换为绑定变量以统计性能),但不影响正常业务流程。原因是Druid在merge SQL时传入null作为dbType,导致无法解析递归查询中的`start`关键字。
|
6月前
|
SQL Java 数据库连接
【YashanDB数据库】由于网络带宽不足导致的jdbc向yashandb插入数据慢
由于网络带宽不足导致的jdbc向yashandb插入数据慢
|
7月前
|
关系型数据库 MySQL 数据库连接
Unity连接Mysql数据库 增 删 改 查
在 Unity 中连接 MySQL 数据库,需使用 MySQL Connector/NET 作为数据库连接驱动,通过提供服务器地址、端口、用户名和密码等信息建立 TCP/IP 连接。代码示例展示了如何创建连接对象并执行增删改查操作,确保数据交互的实现。测试代码中,通过 `MySqlConnection` 类连接数据库,并使用 `MySqlCommand` 执行 SQL 语句,实现数据的查询、插入、删除和更新功能。
|
8月前
|
SQL Java 关系型数据库
使用 JDBC 实现 Java 数据库操作
JDBC(Java Database Connectivity)是 Java 提供的数据库访问技术,允许通过 SQL 语句与数据库交互。本文详细介绍了 JDBC 的使用方法,包括环境准备、编程步骤和完整示例。
755 7
|
9月前
|
SQL 关系型数据库 API
HarmonyOs开发:关系型数据库封装之增删改查
每个方法都预留了多种调用方式,比如使用callback异步回调或者使用Promise异步回调,亦或者同步执行,大家在使用的过程中,可以根据自身业务需要进行选择性调用,也分别暴露了成功和失败的方法,可以针对性的判断在执行的过程中是否执行成功。
304 13
|
9月前
|
SQL Java 数据库连接
JDBC编程安装———通过代码操控数据库
本文,教你从0开始学习JBCD,包括驱动包的下载安装调试设置,以及java是如何通过JBDC实现对数据库的操作,以及代码的分析,超级详细

热门文章

最新文章