获取数据库连接

static Connection con=JdbcUtils.MyUtils();//这个连接类静态获取要自己定义

插入

public static void insert() throws SQLException{
QueryRunner qr=new QueryRunner();
String sql="insert into sort(sname,sprice,sdesc) values (?,?,?)";
   //用数组封装插入数据
Object []obj={"小米手机",,"大甩卖"};
     //obj是数组,位置要求插入的是可变参数,这里用数组来满足
int re=qr.update(con,sql,obj);
System.out.println(re);
DbUtils.close(con);
}

修改

public static void update() throws SQLException{
QueryRunner qr=new QueryRunner();
String sql="update sort set sname=?,sprice=?,sdesc=? where sid=?";
Object [] obj={"花",,"热卖",};
int r=qr.update(con,sql,obj);
System.out.println(r);
DbUtils.close(con);
}

删除

public static void delete() throws SQLException{
QueryRunner qr=new QueryRunner();
String sql="delete from sort where sid=?";
int re=qr.update(con,sql,11);
System.out.println(re);
DbUtils.close(con);
}

查询--查询有多种处理结果集的方式,这里写8种

ArrayHandler

将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值

ArrayListHandler

将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。

BeanHandler

将结果集中第一条记录封装到一个指定的javaBean中。

BeanListHandler

将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中

ColumnListHandler

将结果集中指定的列的字段值,封装到一个List集合中

ScalarHandler

它是用于单数据。例如select count(*) from 表操作。

MapHandler

将结果集第一行封装到Map集合中,Key 列名, Value 该列数据

MapListHandler

将结果集第一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合

private static void MapListHandler() throws SQLException {
/*
* 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合
*/
QueryRunner qr=new QueryRunner();
String sql="select * from sort";
List<Map<String,Object>> result=qr.query(con, sql,new MapListHandler());
for(Map<String,Object> map:result){
for(String key:map.keySet()){
System.out.print(key+"..."+map.get(key)+" ");
}
System.out.println();
}
DbUtils.close(con);
}
private static void MapHandler() throws SQLException {
/*
* 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据
*/
QueryRunner qr=new QueryRunner();
String sql="select * from sort";
Map<String,Object> result=qr.query(con, sql,new MapHandler());
for(String key:result.keySet()){
System.out.print(key+"..."+result.get(key));
}
DbUtils.close(con); }
private static void ScalarHandler() throws SQLException {
/*
* 它是用于单数据。例如select count(*) from 表操作
*/
QueryRunner qr=new QueryRunner();
String sql="select count(*) from sort";
Object obj=qr.query(con, sql,new ScalarHandler<Object>());
System.out.println(obj);
DbUtils.close(con); }
private static void ColumnListHandler() throws SQLException {
/*
* 将结果集中指定的列的字段值,封装到一个List集合中
*/
QueryRunner qr=new QueryRunner();
String sql="select * from sort";
//返回的是一个String
List<String> result=qr.query(con, sql,new ColumnListHandler<String>("sname"));
for(Object obj:result){
System.out.println(obj);
}
DbUtils.close(con); }
private static void BeanListHandler() throws SQLException {
/*
* 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
*/
QueryRunner qr=new QueryRunner();
String sql="select * from sort";
//返回的是List集合
List<Sort> result=qr.query(con, sql,new BeanListHandler<Sort>(Sort.class));
for(Sort s:result){
System.out.println(s);
}
DbUtils.close(con); }
private static void BeanHandler() throws SQLException {
/*
* 将结果集中第一条记录封装到一个指定的javaBean中
*/
QueryRunner qr=new QueryRunner();
String sql="select * from sort";
//通过反射获得一个Sort对象,加了Sort的泛型
Sort s=qr.query(con, sql,new BeanHandler<Sort>(Sort.class));
//因为重写了toString(),可直接打印
System.out.println(s);
DbUtils.close(con);
}
private static void ArrayListHandler() throws SQLException {
/*
* 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中
*/
QueryRunner qr=new QueryRunner();
String sql="select * from sort";
//返回的是一个list,每条list是一个Object数组
List<Object[]> result=qr.query(con,sql,new ArrayListHandler());
//这里用到双重for循环遍历
for(Object[] obj:result){
for(Object o:obj){
System.out.print(o);
}
System.out.println();
}
DbUtils.close(con); }
private static void ArrayHandler() throws SQLException {
/*
* 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
*/
QueryRunner qr=new QueryRunner();
String sql="select * from sort";
//返回的是一个Object数组
Object [] obj=qr.query(con,sql,new ArrayHandler());
for(Object o:obj){
System.out.print(o);
}
DbUtils.close(con); }

Druid连接池可参考:

https://blog.csdn.net/mollen/article/details/82556358

DButils实现增删查改的更多相关文章

  1. JDBC终章- 使用 DBUtils实现增删查改- C3P0Utils数据源/QueryRunner runner连接数据源并执行sql

    JDBC终章- 使用 DBUtils实现增删查改 1.数据库结构 Create Table CREATE TABLE `user` ( `id` ) NOT NULL AUTO_INCREMENT, ...

  2. 利用dbutils工具实现数据的增删查改操作(dbutis入门)

    一.前期准备 1.安装数据库(如:mysql5.5) 2.安装Eclipse(如:3.4) 3.下载数据库驱动包 4.下载dbutis工具包 5.在Eclipse创建名为 dbutils 的工程并在工 ...

  3. 6.在MVC中使用泛型仓储模式和依赖注入实现增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  4. 3.EF 6.0 Code-First实现增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-entity-framework-5-0-code- ...

  5. 4.在MVC中使用仓储模式进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-using-the-repository-pattern-in-mvc/ 系列目录: ...

  6. 5.在MVC中使用泛型仓储模式和工作单元来进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  7. jdbc的实例应用:增删查改实现

    //在jdbc中进行增删查改 //查看所有 public static void findAll() { String url = "jdbc:mysql://localhost:3306/ ...

  8. 用javascript实现html元素的增删查改[xyytit]

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. hibernate基础增删查改简单实例

    hibernate 基础理论知识网上很多,可以百度和google.这里不做多的介绍,以一个User表来开展例子 建一个web-project 我这里用了junit单元测试环境来进行增删查改的测试,别的 ...

随机推荐

  1. 服务器端事件发送SSE

    背景 近期有这么一个需求: 手机端需要展示一个比较大的pdf 基于手机端网络/流量/体验等考虑,希望不通过pdf下载然后展示 而是把pdf转成一张张的图片,然后再在手机上展示. 分析 pdf转图片,肯 ...

  2. 2018-02-06 编程猫IDE体验:对Scratch的改进

    前两天偶遇编程猫推介(为什么没有中文的编程?), 第一眼感觉像Scratch, 求证之下确实, 并且据说有改良. 今天非常粗浅地尝试一下, 限于水平没有做出很炫的效果, 不过颇有些发现. 首先上最终效 ...

  3. React 入门学习笔记整理(二)—— JSX简介与语法

    先看下这段代码: import React from 'react'; //最终渲染需要调用ReactDOM库,将jsx渲染都页面中 import ReactDOM from 'react-dom'; ...

  4. SAP 官网中文帮助文件&BP中文资料汇总

    系统 描述 版本 连接 SAP ME  制造执行 SAP Manufacturing Execution (SAP ME) 15.0 点击我 SAP ECC EHP6 财务部分 SAP ERP 6.0 ...

  5. mysql5.7 安装和多源复制实践

    MySQL 5.7发布后,在复制方面有了很大的改进和提升.比如开始支持多源复制(multi-source)以及真正的支持多线程复制了.多源复制可以使用基于二进制日子的复制或者基于事务的复制.下面我们说 ...

  6. Android View体系(六)从源码解析Activity的构成

    前言 本来这篇是要讲View的工作流程的,View的工作流程主要指的measure.layout.draw这三大流程,在讲到这三大流程之前我们有必要要先了解下Activity的构成,所以就有了这篇文章 ...

  7. JVM内核优化

    1.垃圾回收器 JVM垃圾回收器有串行和并行两种. 1.1 Serial收集器(串行,单线程),现在使用较少 Serial一般收集新生代 SerialOld一般收集老年代(采用标记压缩算法) 1.2 ...

  8. 软件工程-CMM与CMMI

    CMM CMMI

  9. WebStorm连接Github教程

    上学期刚开学的时候看过一次git相关的内容,很久没用过,忘了,两个月前又看了一次还精心做了笔记,也没有具体使用,又忘了,所以,避免又双叒叕忘了,我决定正式把git用起来.刚开始是通过Git Bash来 ...

  10. PHP类多继承的替代方案Traits

    概述 traits是PHP5.4新进入的特性,其目的就是解决PHP的类不能多继承的问题.Traits不是类!不能被实例化.可以理解为一组能被不同的类都能调用到的方法集合.只需要在类中使用关键词use引 ...