增删改查——DBUtils
利用QueryRunner类实现对数据库的增删改查操作,需要先导入jar包:commons-dbutils-1.6。利用QueryRunner类可以实现对数据步骤的简化。
1、添加
运用JDBC工具类实现连接:
- package JDBCUtils;
- import java.io.IOException;
- import java.io.InputStream;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.Properties;
- public class JDBCUtils {
- private static Connection con;
- private static String driver;
- private static String url;
- private static String username;
- private static String password;
- static {// 静态代码块只执行一次,获取一次信息即可
- try {
- readConfig();
- Class.forName(driver);
- con = DriverManager.getConnection(url, username, password);
- } catch (Exception ex) {
- throw new RuntimeException("数据库连接失败");
- }
- }
- /*
- * getClassLoader();返回该类的加载器
- * getResourceAsStream();查找具有给定名称的资源
- */
- private static void readConfig() {
- InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("JDBC.properties");
- Properties pro = new Properties();
- try {
- pro.load(in);
- } catch (IOException e) {
- e.printStackTrace();
- }
- driver = pro.getProperty("driver");
- url = pro.getProperty("url");
- username = pro.getProperty("username");
- password = pro.getProperty("password");
- }
- public static Connection getConnection() {
- return con;
- }
- public static void close(Connection con) {
- if (con != null) {
- try {
- con.close();
- } catch (SQLException e) {
- e.printStackTrace();
- System.out.println("con流关闭异常!");
- }
- }
- }
- public static void close(Connection con, Statement stat) {
- if (stat != null) {
- try {
- stat.close();
- } catch (SQLException e) {
- e.printStackTrace();
- System.out.println("stat流关闭异常!");
- }
- }
- if (con != null) {
- try {
- con.close();
- } catch (SQLException e) {
- e.printStackTrace();
- System.out.println("con流关闭异常!");
- }
- }
- }
- public static void close(Connection con, Statement stat, ResultSet rs) {
- if (rs != null) {
- try {
- rs.close();
- } catch (SQLException e) {
- e.printStackTrace();
- System.out.println("rs流关闭异常!");
- }
- }
- if (stat != null) {
- try {
- stat.close();
- } catch (SQLException e) {
- e.printStackTrace();
- System.out.println("stat流关闭异常!");
- }
- }
- if (con != null) {
- try {
- con.close();
- } catch (SQLException e) {
- e.printStackTrace();
- System.out.println("con流关闭异常!");
- }
- }
- }
- }
- import java.sql.Connection;
- import java.sql.SQLException;
- import org.apache.commons.dbutils.QueryRunner;
- import JDBCUtils.JDBCUtils;
- public class add {
- public static void main(String[] args) {
- Connection con = null;
- try {
- con = JDBCUtils.getConnection();
- QueryRunner qr = new QueryRunner();
- String sql = "INSERT INTO student(studentno,sname,sex,birthday,classno,point,phone,email) VALUES(?,?,?,?,?,?,?,?)";
- Object[] ", "Jack", "男", "1988-12-01",
- ", "Tom.@3218n.com" };
- int num = qr.update(con, sql, params);
- System.out.println("添加了" + num + "行");
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- JDBCUtils.close(con);
- }
- }
2、删除
- import java.sql.Connection;
- import java.sql.SQLException;
- import org.apache.commons.dbutils.QueryRunner;
- import JDBCUtils.JDBCUtils;
- public class DeleteDemo {
- public static void main(String[] args) {
- Connection con = null;
- try {
- con = JDBCUtils.getConnection();
- QueryRunner qr = new QueryRunner();
- String sql = "DELETE from Student where sname =?";
- Object[] delete = { "Tom" };
- qr.update(con, sql, delete);
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- JDBCUtils.close(con);
- }
- }
3、修改
- import java.sql.Connection;
- import java.sql.SQLException;
- import org.apache.commons.dbutils.QueryRunner;
- import JDBCUtils.JDBCUtils;
- public class UpdateDemo {
- public static void main(String[] args) {
- Connection con = null;
- try {
- con = JDBCUtils.getConnection();
- QueryRunner qr = new QueryRunner();
- String sql = "Update Student set classno=? Where sname='韩吟秋'";
- Object[] update = { " };
- qr.update(con, sql, update);
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- JDBCUtils.close(con);
- }
- }
4、查询
(1)
ArrayHandler: 将结果集的第一行存储到Object[]数组中
ArrayListHandler: 将结果集的每一行存储到Object[]数组中
- import java.sql.Connection;
- import java.sql.SQLException;
- import java.util.Arrays;
- import java.util.List;
- import org.apache.commons.dbutils.QueryRunner;
- import org.apache.commons.dbutils.handlers.ArrayListHandler;
- import JDBCUtils.JDBCUtils;
- public class SeleteDemo {
- public static void main(String[] args) {
- Connection con = null;
- try {
- con = JDBCUtils.getConnection();
- QueryRunner qr = new QueryRunner();
- String sql = "Select * from Student where studentno=?";
- Object[] };
- List<Object[]> list = qr.query(con, sql, new ArrayListHandler(),
- select);
- // 将记录封装到一个装有Object[]的List集合中
- for (Object[] arr : list) {
- System.out.println(Arrays.toString(arr));
- }
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- JDBCUtils.close(con);
- }
- }
(2)
BeanHandler:结果集中第一条记录封装到一个指定的javaBean中。
BeanListHandler:结果集中每一条记录封装到javaBean中,再将javaBean封装到list集合中。
- public class Student {
- private String studentno;
- private String sname;
- private String sex;
- private String birthday;
- private String classno;
- private String point;
- private String phone;
- private String email;
- public String getStudentno() {
- return studentno;
- }
- public void setStudentno(String studentno) {
- this.studentno = studentno;
- }
- public String getSname() {
- return sname;
- }
- public void setSname(String sname) {
- this.sname = sname;
- }
- 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 [studentno=" + studentno + ", sname=" + sname + ", sex="
- + sex + ", birthday=" + birthday + ", classno=" + classno
- + ", point=" + point + ", phone=" + phone + ", email=" + email
- + "]";
- }
- public String getClassno() {
- return classno;
- }
- public void setClassno(String classno) {
- this.classno = classno;
- }
- public String getPoint() {
- return point;
- }
- public void setPoint(String point) {
- this.point = point;
- }
- public String getPhone() {
- return phone;
- }
- public void setPhone(String phone) {
- this.phone = phone;
- }
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- }
- import java.sql.Connection;
- import java.sql.SQLException;
- import java.util.List;
- import org.apache.commons.dbutils.QueryRunner;
- import org.apache.commons.dbutils.handlers.BeanListHandler;
- import JDBCUtils.JDBCUtils;
- public class SeleteDemo {
- public static void main(String[] args) {
- Connection con = null;
- try {
- con = JDBCUtils.getConnection();
- QueryRunner qr = new QueryRunner();
- String sql = "Select * from Student where studentno=?";
- Object[] };
- List<Student> list = qr.query(con, sql,new BeanListHandler<Student>((Student.class)), select);
- // 将记录封装到一个装有Object[]的List集合中
- for (Student s : list) {
- System.out.println(s);
- }
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- JDBCUtils.close(con);
- }
- }
(3)ColumnListHandler将结果集中指定的列封装到List集合。
- import java.sql.Connection;
- import java.sql.SQLException;
- import java.util.List;
- import org.apache.commons.dbutils.QueryRunner;
- import org.apache.commons.dbutils.handlers.ColumnListHandler;
- import JDBCUtils.JDBCUtils;
- public class SeleteDemo {
- public static void main(String[] args) {
- Connection con = null;
- try {
- con = JDBCUtils.getConnection();
- QueryRunner qr = new QueryRunner();
- String sql = "Select * from Student where studentno=?";
- Object[] };
- List<String> list = qr.query(con, sql,new ColumnListHandler<String>(), select);
- // 将记录封装到一个装有Object[]的List集合中
- for (String str: list) {
- System.out.println(str);
- }
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- JDBCUtils.close(con);
- }
- }
查询学生的学号:
- import java.sql.Connection;
- import java.sql.SQLException;
- import java.util.List;
- import org.apache.commons.dbutils.QueryRunner;
- import org.apache.commons.dbutils.handlers.ColumnListHandler;
- import JDBCUtils.JDBCUtils;
- public class SeleteDemo {
- public static void main(String[] args) {
- Connection con = null;
- try {
- con = JDBCUtils.getConnection();
- QueryRunner qr = new QueryRunner();
- String sql = "Select studentno from Student ";
- Object[] select = {};
- List<String> list = qr.query(con, sql,new ColumnListHandler<String>(), select);
- // 将记录封装到一个装有Object[]的List集合中
- for (String str: list) {
- System.out.println(str);
- }
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- JDBCUtils.close(con);
- }
- }
(4)ScalarHandler返回一个数据
- import java.sql.Connection;
- import java.sql.SQLException;
- import org.apache.commons.dbutils.QueryRunner;
- import org.apache.commons.dbutils.handlers.ScalarHandler;
- import JDBCUtils.JDBCUtils;
- public class SeleteDemo {
- public static void main(String[] args) {
- Connection con = null;
- try {
- con = JDBCUtils.getConnection();
- QueryRunner qr = new QueryRunner();
- String sql = "SELECT COUNT(sname) FROM Student";
- Object[] select = {};
- long count= qr.query(con, sql, new ScalarHandler<Long>(), select);
- System.out.println(count);
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- JDBCUtils.close(con);
- }
- }
(5)MapHandler:将结果集的第一行封装到Map集合中
MapListHandler:将结果集的多条记录封装到一个集合中
- import java.sql.Connection;
- import java.sql.SQLException;
- import java.util.List;
- import java.util.Map;
- import org.apache.commons.dbutils.QueryRunner;
- import org.apache.commons.dbutils.handlers.MapListHandler;
- import JDBCUtils.JDBCUtils;
- public class SeleteDemo {
- public static void main(String[] args) {
- Connection con = null;
- try {
- con = JDBCUtils.getConnection();
- QueryRunner qr = new QueryRunner();
- String sql = "Select studentno from Student ";
- Object[] select = {};
- List<Map<String,Object>> list = qr.query(con, sql, new MapListHandler(),select);
- // 将记录封装到一个装有Object[]的List集合中
- for (Map<String,Object> map : list) {
- for(String key : map.keySet()){
- System.out.print(key+"..."+map.get(key));
- }
- System.out.println();
- }
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
- JDBCUtils.close(con);
- }
- }
增删改查——DBUtils的更多相关文章
- dbutils中实现数据的增删改查的方法,反射常用的方法,绝对路径的写法(杂记)
jsp的三个指令为:page,include,taglib... 建立一个jsp文件,建立起绝对路径,使用时,其他jsp文件导入即可 导入方法:<%@ include file="/c ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- mvc模式jsp+servel+dbutils oracle基本增删改查demo
mvc模式jsp+servel+dbutils oracle基本增删改查demo 下载地址
- 开源工具DbUtils的使用(数据库的增删改查)
开源工具DbUtils的使用(数据库的增删改查) 一.DbUtils简介: DBUtils是apache下的一个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果 ...
- Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用
前面做了一个非常垃圾的小demo,真的无法直面它,菜的抠脚啊,真的菜,好好努力把.菜鸡. --WH 一.JDBC是什么? Java Data Base Connectivity,java数据库连接,在 ...
- python操作mysql数据库增删改查的dbutils实例
python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...
- 使用DbUtils实现增删改查——ResultSetHandler 接口的实现类
在上一篇文章中<使用DbUtils实现增删改查>,发现运行runner.query()这行代码时.须要自己去处理查询到的结果集,比較麻烦.这行代码的原型是: public Object q ...
- Android 利用xUtils框架实现对sqllite的增删改查
首先下载xUtils,下载地址:https://github.com/wyouflf/xUtils 把下载好的文件压缩,把里面的jar包拷进项目中如图所示: 这里新建一个User类进行测试增删改查 ...
- MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
随机推荐
- 8.15 day33 进程池与线程池_协程_IO模型(了解)
进程池和线程池 开进程开线程都需要消耗资源,只不过两者比较的情况线程消耗的资源比较少 在计算机能够承受范围之内最大限度的利用计算机 什么是池? 在保证计算机硬件安全的情况下最大限度地利用计算机 ...
- 8.12 day31 进程间通信 Queue队列使用 生产者消费者模型 线程理论 创建及对象属性方法 线程互斥锁 守护线程
进程补充 进程通信 要想实现进程间通信,可以用管道或者队列 队列比管道更好用(队列自带管道和锁) 管道和队列的共同特点:数据只有一份,取完就没了 无法重复获取用一份数据 队列特点:先进先出 堆栈特点: ...
- c++智能指针介绍
C++11标准引入了boost库中的智能指针,给C++开发时的内存管理提供了极大的方便.接下来这篇文件介绍shared_ptr/weak_ptr内部实现原理及使用细节. C++不像java有内存回收机 ...
- 《Java 8 in Action》Chapter 5:使用流
流让你从外部迭代转向内部迭代,for循环显示迭代不用再写了,流内部管理对集合数据的迭代.这种处理数据的方式很有用,因为你让Stream API管理如何处理数据.这样Stream API就可以在背后进行 ...
- Oracle面对“数据倾斜列使用绑定变量”场景的解决方案
1.背景知识介绍 2.构造测试用例 3.场景测试 4.总结 1.背景知识介绍 我们知道,Oracle在传统的OLTP(在线事务处理)类系统中,强烈推荐使用绑定变量,这样可以有效的减少硬解析从而 ...
- 随笔编号-08 MYSQL 存储过程,5分钟执行调用过程;
delimiter //DROP PROCEDUREIF EXISTS jdt.day_instan_data_task// CREATE PROCEDURE jdt.day_instan_data_ ...
- python 20 规范化目录
目录 规范化目录 1. 划归固定的路径: 2. 划分文件 2.1 seetings 配置文件 2.2 common 公共组件文件 2.3 src 主文件 2.4 starts 项目启动文件 2.5 类 ...
- HDU 6313
题意略. 思路:数论题. #include<bits/stdc++.h> using namespace std; ; const int maxn = p * p; ][maxn + ] ...
- 整数 布尔值 字符串 for循环
整型和布尔值的转换 整型---数字(int) 用于比较和运算 32位范围 -2** 31到2 **32-1 64位范围-2** 63到2** 63-1 十进制转二进制计算方法: 15的二进制为 15% ...
- JavaScript String 字符串方法
JavaScript String 字符串方法汇总 1.str.indexOf() 方法查找字符串中的字符串 返回 字符串中指定文本首次出现的索引(位置) JavaScript ...