增删改查——QueryRunner类

利用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[] params = { "20191811", "Jack", "男", "1988-12-01",
                    "201901", "239", "16623540978", "[email protected]" };

            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 = { "201901" };
            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[] select = { 20191811 };
            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集合中。

原文地址:https://www.cnblogs.com/zhai1997/p/11382079.html

时间: 2024-10-13 20:37:54

增删改查——QueryRunner类的相关文章

php对数据库增删改查操作类

1 <?php 2 3 /** 4 * 函数名称:SqlTool.class.php 5 * 函数功能:php对数据库增删改查操作类 6 * 函数作者:张真贵 7 * 创建时间:2015-01-05 8 * 修改时间: 9 */ 10 header("Content-Type:text/html;charset=utf-8"); 11 class SqlTool{ 12 private $conn; 13 private $host = 'localhost'; 14 priva

完整增删改查 实体类 数据访问

完整修改和查询:中间变量运用. 1.先查 2.执行操作 查询                Console.WriteLine("学号" + "\t" + "姓名" + "\t" + "性别" + "\t" + "    " + "生日" + "\t" + "民族" + "\t");   

Hibernate框架增删改查测试类归为一个类

1 package cn.happy.test; 2 3 4 import org.hibernate.Session; 5 import org.hibernate.SessionFactory; 6 import org.hibernate.Transaction; 7 import org.hibernate.cfg.Configuration; 8 import org.junit.After; 9 import org.junit.Before; 10 import org.junit

webApi实现增删改查操作

1.WebApi是什么 ASP.NET Web API 是一种框架,用于轻松构建可以由多种客户端(包括浏览器和移动设备)访问的 HTTP 服务.ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台. 可以把WebApi看成Asp.Net项目类型中的一种,其他项目类型诸如我们熟知的WebForm项目,Windows窗体项目,控制台应用程序等. WebApi类型项目的最大优势就是,开发者再也不用担心客户端和服务器之间传输的数据的序列化

ASP.NET WebAPI 项目示例(增删改查)

1.WebApi是什么 ASP.NET Web API 是一种框架,用于轻松构建可以由多种客户端(包括浏览器和移动设备)访问的 HTTP 服务.ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台. 可以把WebApi看成Asp.Net项目类型中的一种,其他项目类型诸如我们熟知的WebForm项目,Windows窗体项目,控制台应用程序等. WebApi类型项目的最大优势就是,开发者再也不用担心客户端和服务器之间传输的数据的序列化

springMVC操作mongoDB增删改查

下面是mongoDb简单的增删改查(新闻类) 附:query.addCriteria(Criteria.where("modelId").ne("").ne(null));  //非空    query.with(new Sort(new Order(Direction.DESC, "ct")));  //倒叙 多个字段排序:第一排序按照sort降序,第二排序按照ct降序    query.with(new Sort(new Order(Dire

Java_Web三大框架之Hibernate增删改查

下面介绍一下Hibernate的增删改查. 第一步:编写用户实体类以及User.hbm.xml映射 package com.msl.entity; public class User { private int id; private String name; private String password; private String telephone; private String username; private String isadmin; public User() { } p

使用DbUtils实现增删改查——ResultSetHandler 接口的实现类

在上一篇文章中<使用DbUtils实现增删改查>,发现运行runner.query()这行代码时.须要自己去处理查询到的结果集,比較麻烦.这行代码的原型是: public Object query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) 当中ResultSetHandler是一个接口,实际上.万能的Apache已经为我们提供了众多好用的实现类,如今举比例如以下: public c

20150113--PDO增删改查+封装PDO类

回顾 方法重写:是因为对象的访问会先去子类的类空间找,从而形成了对父类的覆盖. 继承链:类只能单继承,但是可以通过继承链来实现多继承 特殊类:final类和抽象类 接口:interface PHP重载:当访问一个权限不够或者不存在的属性或者方法的时候,会自动触发的魔术方法. 属性重载和方法重载 对象的保存和还原:serialize和unserialize(对应的类已经在内存:如果有资源属性必须进行重新加载资源),魔术方法(__sleep和__wakeup) 对象遍历:默认只能遍历public属性