使用C3P0进行数据库增删改查操作

利用数据库连接池进行增删改查(全 详细) 通过数据库连接池对数据库进行增删改查的操作 c3p0是一个库。它扩展了传统的jdbc数据库连接池,并且支持JDBC3规范和JDBC2的标准扩展。通过数据库池连接数据库比传统的数据库连接要有许多优点 传统数据库需要建立连接,断开连接,而通过数据库连接池则不需要这样进行,数据库连接池在初始化时,就已经建立连接,所以如果要使用数据库,则相当于在数据库池中找一个空闲的连接就行,不需要数据库时,则将连接再放回池子中即可。 通过数据库池连接需要相应的jar包 这里面除了最后一个和倒数第3个应该都是关于数据库连接池的j 阅读详情

一、准备工作

首先导入jar包:
①c3p0-0.9.1.2.jar
②commons-dbutils-1.7.jar
③mysql-connector-java-5.1.19-bin.jar
然后在src中创建c3p0-config.xml

<c3p0-config>
	<default-config>
		<property name="jdbcUrl">jdbc:mysql://localhost:3306/数据库名?useUnicode=true&amp;characterEncoding=utf-8</property>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="user">用户名</property>
		<property name="password">密码</property>
		<property name="initialPoolSize">3</property>
		<property name="maxPoolSize">6</property>
		<property name="maxIdleTime">1000</property>
	</default-config>
</c3p0-config>

二、配置

(一)编写C3P0Conn.java

package cn.tx.commons;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class C3P0Conn {
    //数据源
    private static ComboPooledDataSource ds = new ComboPooledDataSource();
    public static Connection getConnection(){
        Connection conn = null;
        try {
            //获取到连接
            conn = ds.getConnection();
            System.out.println("C3P0连接成功!!!");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
    //关闭资源
    public static void closeConntion(Connection conn){
        if(conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

(二)创建实体类Student[依照数据库]

package cn.tx.enitty;

public class Student {

    private int id;
    private String name;
    private String  sex;
    private String birthday;

    public Student() {
    }

    public Student(int id, String name, String sex, String birthday) {
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.birthday = birthday;
    }

    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 getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", birthday='" + birthday + '\'' +
                '}'+"\n";
    }
}

(二)进行增删改查

package cn.tx.dao;

import cn.tx.commons.C3P0Conn;
import cn.tx.enitty.Student;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

public class StudentDao {
    private Connection conn = null;
    //DBUtils工具类
    private QueryRunner qr = new QueryRunner();

    //查询所有的学生
    public List<Student> SelectAll(){
        List<Student> List = null;
        //第一步获取连接
        conn = C3P0Conn.getConnection();
        //第二步编写sql语句
        String sql = "select * from students";
        try {
            List = qr.query(conn,sql,new BeanListHandler<Student>(Student.class));
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //关闭资源
            C3P0Conn.closeConntion(conn);
        }
        return List;
    }
    /*条件查询*/
    public Student SelectAll2(int id,String name){
        Student stu = null;
        conn = C3P0Conn.getConnection();
        String sql = "select * from students where id = ? and name = ?";
        try {
            stu = qr.query(conn,sql,new BeanHandler<Student>(Student.class),id,name);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            C3P0Conn.closeConntion(conn);
        }
        return stu;
    }
    //增加
    public int Insert(Student st){
        int i = 0;
        conn = C3P0Conn.getConnection();
        String sql = "insert into students(name,sex,birthday) values(?,?,?)";
        try {
            i = qr.update(conn,sql,st.getName(),st.getSex(),st.getBirthday());
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            C3P0Conn.closeConntion(conn);
        }
        return i;
    }
    //删除
    public int deleteConn(int id){
        int i=0;
        conn = C3P0Conn.getConnection();
        String sql = "delete from students where id = ?";
        try {
            i = qr.update(conn,sql,id);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            C3P0Conn.closeConntion(conn);
        }
        return i;
    }
    //修改
    public int updateConn(Student stu){
        int i=0;
        conn = C3P0Conn.getConnection();
        String sql = "update students set name=?,sex=?,birthday=? where id = ?";
        try {
            i = qr.update(conn,sql,stu.getName(),stu.getSex(),stu.getBirthday(),stu.getId());
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            C3P0Conn.closeConntion(conn);
        }
        return i;
    }
    public static void main(String[] args) {
        StudentDao sd = new StudentDao();
        //查询
//        System.out.println(sd.SelectAll());
        //条件查询
//        System.out.println(sd.SelectAll2(8, "小思达"));
        //增加
//        Student student = new Student();
//        student.setName("梦缘");
//        student.setSex("男");
//        student.setBirthday("2021-2-2");
//        int i = sd.Insert(student);
//        System.out.println(i);
        //删除
//        int i1 = sd.deleteConn(11);
//        System.out.println(i1);

        Student stu1 = sd.SelectAll2(8, "小思达");
        System.out.println(stu1);
        stu1.setName("小梦缘");
        int i = sd.updateConn(stu1);
        System.out.println(i);
    }
}

附上结构图
在这里插入图片描述

jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库) Hello,大家好!今天是我第一次写微博,经验不足,希望大家多多包涵,给我多提提建议或意见。我为大家带来一用个jdbc连接Oracle数据库实现学生管理系统的项目,大家如果有正在做这方面的项目,可以拿来参考。好了,闲话不扯一些,下面进入正题:  一、首先我来给大家屡一下思路: 1.首先需要先导jar包:一共需要两个   一个是ojdbc14.jar,它是用于实现用jdbc连接数据库的。 阅读详情

相关推荐

学生信息管理系统、MVC设计模式,实现学生信息管理(增删改查)使用MYSQL、C3P0、DBUtils

MVC设计模式,实现学生信息管理(增删改查)使用MYSQL、C3P0、DBUtils

Jsp+Servlet+JDBC(c3p0连接池)+Mysql实现增删改查

一、 项目介绍 1、采用MVC架构模式中,JSP充当视图(view)而Servlet适合充当控制器(controller)。 2、项目开发工具:    (1) jdk1.8.0_92    (2) apache-tomcat-8.5.39    (3) mysql-5.5.45-winx64    (4) Navicat_for_MySQL_11.0.10   &nbs

NanYII_的博客 3566

Struts2+MySQL+c3p0+MVC_增删查改+分页

用Struts2+MVC+MySql写的增删查改以及分页显示功能.

c3p0实现对数据库的增删改查(JDBC加强版)

1.先将jar包导好(其中第二个和第三个不用导): 2.创建一个c3p0带.xml的文件且放在src目录下: 3.先创建一个学生类: public class Student { private int id; private String name; private String sex; private String brithday; ...

兔的骄傲 2259

c3p0+dbUtils+Ajax+Json+Jquery实现【增删改查】Demo

c3p0+dbUtils+Ajax+Json+Jquery实现【增删改查】Demo!不解释,我博客里有效果图!看了效果图再决定下不下,值不值!内含数据库备份文件!

使用c3p0连接数据库实现增删改查

主要为大家详细介绍了使用c3p0连接数据库实现增删改查,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

医院人员管理系统03_下午:C3P0连接池,完成简单的增删改查

C3P0连接池要比jdbc更简单,dao层写方法就能看出来。

m0_75257168的博客 415

分析以太网帧结构_100G以太网接口调试初体验

是的,标题没有多敲一个“0”,明人不说暗话,就是在FPGA上实现100G以太网接口设计。正好参与了实验室某项目中的100G接口的调试,早想写个专栏文章了,由于调试过程中发现了一些硬件问题,导致迟迟没有往前推进,现在问题解决了之后可以简单分享一下100G以太网接口的调试初体验了~(好像DDR4读写测试系列文章还没搞完 )这篇初体验暂时不分多个章节了,基本设计流程与之前发布的“10G以太网接口”系列文...

weixin_39574050的博客 1602

C3P0(数据库连接池)详解

C3P0是一个开源的JDBC连接池

five小点心的博客 1万+

FOC控制必看:单/双/三电阻电流采样方案全对比(附NXP实战避坑指南)

本文深入对比了FOC控制中单电阻、双电阻和三电阻电流采样方案的优劣与适用场景,重点剖析了采样时序、窗口与ADC转换的工程挑战。针对NXP平台,提供了解决采样窗口过窄的实战方案与配置指南,帮助工程师根据成本与性能需求做出最优选择,并规避常见设计陷阱。

n2o3p4的博客 413

ICCV 2025 | 哈工大、清华等提出首个双曲学习框架:HLFormer,革新局部相关视频检索

离原点越远,代表的语义越具体(部分)。现有方法大多在传统的欧几里得空间中对视频和文本进行建模,但这往往会导致对视频内在层次结构的错误表示,从而影响检索的准确性。通过UMAP对学习到的帧嵌入进行可视化(如下图),可以观察到,来自同一时刻的视频帧在嵌入空间中聚集在一起,清晰地展示了模型对时序关系的捕捉能力。下图的双曲空间可视化进一步证实了模型的层次建模能力:离原点越近的点,代表的语义层级越高、粒度越粗糙,反之亦然。:既然文本查询描述的是视频的一部分,那么在几何表示上,文本的嵌入向量应该从属于视频的嵌入向量。

我爱计算机视觉 1082

使用IDEA开发工具采用Maven方式对MySQL数据库中表内容使用Dao模式完成简单的增删改查操作全过程(内附C3P0连接池与5.7版本MySQL数据库驱动jar)

使用IDEA开发工具采用Maven方式对MySQL数据库中表内容使用Dao模式完成简单的增删改查操作全过程(内附C3P0连接池与5.7版本MySQL数据库驱动jar)

weixin_52672636的博客 2170

TP4056在单节锂电池充电管理中的创新应用与电路优化

本文深入探讨了TP4056线性充电管理芯片在单节锂电池充电电路中的创新应用与优化方案。针对“边充边用”的核心挑战,文章详细解析了利用PMOS管构建智能供电切换电路的原理,实现了外部电源与电池供电的无缝、安全切换,有效杜绝了电池“边充边放”的风险。同时,提供了关键的元器件选型、PCB布局布线技巧及常见问题排查指南,为创客和硬件开发者提供了高性价比、高可靠性的锂电池电源管理实践方案。

rock5的博客 501

使用c3p0对mysql进行删除_使用c3p0连接数据库实现增删改查|chu

学习spring之前,视频中先给我们一个任务就是用c3p0连接数据库来完成增删改查一、准备JAR包:既然是连接数据库第一个最重要的就是数据库的驱动包mysql-connection-java-5.1.44-bin.jar接着就是C3P0-0.9.2.1.jar以及mchange-commons-java-0.2.3.4.jar然后还少不了dbutils 使用的是commons-dbutils-1....

weixin_35789885的博客 164

第5.1节 构网控制:电压源特性与电压调节

摘要: 构网型变流器的核心物理本质是作为可控交流电压源,通过戴维南等效模型(受控电势源+低输出阻抗)自主建立并调节电压,增强电网电压刚度。其电压调节通过无功-电压闭环控制实现,内环为自动电压调节器(AVR),外环为无功-电压下垂特性,模拟同步发电机功能。关键技术包括自适应增益、虚拟阻抗补偿及动态限流策略,以应对弱电网稳定性、故障过流等问题。该设计满足《规范》对电压调节范围、动态无功支撑的要求,是高比例新能源电力系统电压稳定的关键解决方案。

技术工作者 1110

基于RK3588的高效音视频对讲系统设计与实现

本文详细介绍了基于RK3588芯片的高效音视频对讲系统设计与实现。文章深入剖析了RK3588在8K编解码、高性能音频DSP及丰富接口方面的优势,并提供了从开发环境搭建、分层软件架构设计,到视频采集编码、音频回声消除及低延迟网络传输的完整实战指南,旨在帮助开发者充分利用该芯片硬件能力,构建稳定、低延迟的实时通信系统。

dapp9builder的博客 256

使用c3p0对mysql进行增删改查_DbUtils结合C3p0实现数据库的增删改查

dbutils快速入门说明:本文非原生jdbc案例,通过DbUtils和C3p0实现对原生jsdc的简单封装。直接以案例开始一.前期准备*导入jar包​,​*添加c3p0配置文件和jdbcutils工具类​▶c3p0-config.xml(文件名称不能改变,且默认必须放在src目录下)com.mysql.jdbc.Driverjdbc:mysql:///learnrootrootView Code...

weixin_29742557的博客 437

机器人动力学仿真软件:Webots_(14).机器人声音仿真

Webots 中的声音仿真主要通过Sound和两种节点来实现。Sound节点用于播放预定义的音频文件,而节点则允许在仿真过程中动态生成和播放声音。这些节点可以用于模拟机器人的语音输出、报警声、环境噪音等。以下是一个示例,展示如何在控制器代码中播放预定义的声音。// 控制器代码(.c) # include <webots/robot.h> # include <webots/sound.h> # define TIME_STEP 64 const char * sound_name = "sound";

kkchenjj的博客 1312

数据库开发(2)

数据库开发(2)

qq_43759721的博客 363

改进的U-Net在视网膜血管分割上的应用

为了提高算法在血管边界的分割能力,在编码部分采用全局卷积网络(GCN)和边界细化(BR)替换传统的卷积层;在跳跃连接部分引入改进的位置注意模块(PA)和通道注意模块(CA),目的是增加血管与背景之间的对比度,使网络更好地将血管与背景分割开;此外,为了提高网络的性能,在编码部分的最后一层使用密集卷积网络解决网络过拟合问题,同时为了在一定程度上解决梯度爆炸、梯度消失的问题,在解码部分的每一层使用卷积长短记忆网络提升网络获取特征信息的能力。替换传统的卷积操作来解决血管边界非血管像素误分为血管的问题。

weixin_70923796的博客 783

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

DbUtils结合C3p0实现数据库的增删改查

dbutils快速入门 说明:本文非原生jdbc案例,通过DbUtils和C3p0实现对原生jsdc的简单封装。直接以案例开始 一.前期准备 *导入jar包 ​,​ *添加c3p0配置文件和jdbcutils工具类 ​ ▶c3p0-config.xml(文件名称不能改变,且默...

weixin_30825199的博客 451

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

关于JDBC的学习笔记,什么是JDBC、JDBC的使用连接步骤、数据库连接池、C3P0连接池、Druid连接池、JDBCTempla,超详细超完整

JDBC 1.什么是JDBC: ​ 全称: Java DataBase Connectivity ​ 翻译: java 数据库连接 ​ 理解: Java语言来操作数据库 JDBC本质: 其实就是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口. 各大数据库厂商去实现这套接口,提供数据库驱动jar包. 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类. 2.JDBC的使用连接步骤: ​ a.导入驱动jar包 ​ b.注册驱动 ​ c.获取数据库连接对象 Connect

qq_46053369的博客 266

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

mysql中c3p0存入图片_使用c3p0连接数据库实现增删改查

学习spring之前,视频中先给我们一个任务就是用c3p0连接数据库来完成增删改查一、准备JAR包:既然是连接数据库第一个最重要的就是数据库的驱动包mysql-connection-java-5.1.44-bin.jar接着就是C3P0-0.9.2.1.jar以及mchange-commons-java-0.2.3.4.jar然后还少不了dbutils 使用的是commons-dbutils-1....

weixin_32246721的博客 251

数据库与java程序的连接操作--JDBC

JDBC是什么 JDBC,即java Datebase Connectivity,是java与数据库的连接技术,sun公司推出的一套java应用程序访问数据库的技术规范是java与数据库连接的桥梁,用于使用java进行数据库的增删改查。 JDBC是java访问数据库的基石,JDO,Hibernate等知识更好的封装了JDBC。 JDBC是独立于特定数据库管理系统,同于的sql数据库存储和操作的公共接口。 java中的数据库存取技术分类: 1.JDBC直接访问数据库 2.JDO技术(java Date Obj

qq_52873070的博客 450

JDBC_Java Database Connectivity

JDBC

墨染的博客 895
上一篇: JAVA复习之异常处理、 常用类和枚举类型
下一篇: HTML5笔记总结(一)
智汇风渔AI小白
博客等级 码龄7年 1万+粉丝 179原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智汇风渔AI小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值