JDBC工具类完整版!
- package com.aaa.util;
- import java.sql.*;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * JDBC工具类?
- * 一、增删改的通用方法
- * 二、查询的通用方法
- * 三、关闭的通用方法
- */
- public class DBUtil {
- static {
- try {
- Class.forName("com.mysql.jdbc.Driver");
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- public static Connection getConnection(){
- try {
- return DriverManager.getConnection("jdbc:mysql://localhost:3306/qy66?characterEnconding=UTF-8", "root", "root");
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return null;
- }
- /** 增删改的通用方法
- * @paramString sql 要执行的sql
- * @paramObject[] obj 对象类型的数组 里面存放着 sql执行的占位符参数
- * 【name,age,id】
- * 【id】
- * 【name,age】
- * Object... 可变参数
- * */
- public static boolean executeUpdate(String sql,Object... args){
- Connection conn = null;
- PreparedStatement ps = null;
- try {
- conn = getConnection();
- ps = conn.prepareStatement(sql);
- for (int i=0;i<args.length;i++){
- ps.setObject(i+1,args[i]);
- }
- int i = ps.executeUpdate();
- if (i>0)return true;
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- //关闭
- close(conn,ps,null);
- }
- return false;
- }
- /**
- * c查询的通用方法
- * @param sql
- * @param args
- * @return
- */
- public static List<Map<String,Object>> executeQuery(String sql,Object... args){ //可变参数 Object... args
- Connection conn = null;
- PreparedStatement ps = null;
- ResultSet set = null;
- try {
- conn = DBUtil.getConnection();
- ps = conn.prepareStatement(sql);
- /* 有可能有参数 */
- for (int i=0;i<args.length;i++){
- ps.setObject(i+1,args[i]);
- }
- /*执行*/
- set = ps.executeQuery();
- /*需要将所有数据都存放到 List中 每一行 用一个 map存放*/
- List<Map<String,Object>> list = new ArrayList<>();
- /*获取本次查询结果集有多少列*/
- int count = set.getMetaData().getColumnCount();
- while(set.next()){
- Map<String, Object> map = new HashMap<>();//一行数据 用一个map 接收
- /*
- 我们不用在乎数据库表中有几列
- 通过 getMetData().getColumnLabel() 获取列
- 因为用的map键值对集合 得到了列 就能得到相应的values值
- */
- for(int i=0;i<count;i++){
- String name = set.getMetaData().getColumnLabel(i+1);
- map.put(name,set.getObject(name));
- }
- /*将每行的map存放到 List中*/
- list.add(map);
- }
- return list;
- } catch (Exception e) {
- e.printStackTrace();
- }finally {
- close(conn,ps,set);
- }
- return null;
- }
- /** 关闭的通用方法
- * 先进后出的原则
- * */
- private static void close(Connection conn,PreparedStatement st,ResultSet set){
- try {
- if(set!=null){
- set.close();
- }
- if(st!=null){
- st.close();
- }
- if(conn != null){
- conn.close();
- }
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- }
JDBC工具类完整版!的更多相关文章
- 开源JDBC工具类DbUtils
本篇将会详细地介绍Apache公司的JDBC帮助工具类DbUtils以及如何使用.在上一篇中我们已经通过将以前对dao层使用JDBC操作数据库的冗余代码进行了简易封装形成自己的简单工具类JdbcUti ...
- JDBC基础:JDBC快速入门,JDBC工具类,SQL注入攻击,JDBC管理事务
JDBC基础 重难点梳理 一.JDBC快速入门 1.jdbc的概念 JDBC(Java DataBase Connectivity:java数据库连接)是一种用于执行SQL语句的Java API,可以 ...
- MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- java使用注解和反射打造一个简单的jdbc工具类
a simple jdbc tools 如有转载和引用,请注明出处,谢谢 1. 定义我们需要的注解 要想实现对数据库的操作,我们必须知道数据表名以及表中的字段名称以及类型,正如hibernate 使用 ...
- MySQL JDBC事务处理、封装JDBC工具类
MySQL数据库学习笔记(十)----JDBC事务处理.封装JDBC工具类 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit. ...
- DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)
DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类) 一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据 ...
- JDBC第三篇--【事务、元数据、改造JDBC工具类】
这是我JDBC的第一篇 http://blog.csdn.net/hon_3y/article/details/53535798 这是我JDBC的第二篇 http://blog.csdn.net/ho ...
- JDBC【事务、元数据、改造JDBC工具类】
1.事务 一个SESSION所进行的所有更新操作要么一起成功,要么一起失败 举个例子:A向B转账,转账这个流程中如果出现问题,事务可以让数据恢复成原来一样[A账户的钱没变,B账户的钱也没变]. 事例说 ...
随机推荐
- Java开发笔记(七十三)常见的程序异常
一个程序开发出来之后,无论是用户还是程序员,都希望它稳定地运行,然而程序毕竟是人写的,人无完人哪能不犯点错误呢?就算事先考虑得天衣无缝,揣着一笔巨款跑去岛国买了栋抗震性能良好的海边别墅,谁料人算不如天 ...
- JDK8新特性:default方法的应用实践
背景: 最近维护一个老旧工程,遇到集团层面的数据安全改造,需要在DAO层做加解密改造.而这个老旧工程的DAO层是用的JdbcTemplate实现的,尽管template方式实现起来可自由发挥的空间很大 ...
- CTSC 2018酱油记
Day0 5.5 花了一上午的时间把codechef div2的前四题切了,又在zbq老司机的指导下把第五题切了 中午12:00 gryz电竞组从机房出发,临走的时候看到很多学长挺恋恋不舍的,毕竟可能 ...
- #WEB安全基础 : HTML/CSS | 0x8CSS进阶
你以为自己学这么点CSS就厉害了? 学点新东西吧,让你的网页更漂亮 我们只需要用到图片和网页 这是index.html的代码 <html> <head> <title ...
- 驰骋工作流引擎JFlow与activiti的对比 -总结
共同点: 1. 嵌入式的工作流引擎,降低集群复杂性. 2. 严格而灵活的流程版本控制 3. 支持多种数据库 4. 支持多种流程设计模式 5. 成熟度高的开源工作流,具有可靠的稳定性和性能. 区别: 1 ...
- 从.Net到Java学习第三篇——spring boot+mybatis+mysql
从.Net到Java学习第一篇——开篇 环境:mysql5.7 新建mysql数据库demo,然后执行如下sql脚本进行数据表创建和数据初始化: -- ------------------------ ...
- android 摇一摇+震动+声音效果
文章链接:https://mp.weixin.qq.com/s/n6EXvfmpNPtWM1kEnGgwUA 摇一摇红包效果已经是老生常谈的了,利用手机的传感器识别摇一摇,同时过程中进行动画+震动+声 ...
- 单台MongoDB实例开启Oplog
背景 随着数据的积累,MongoDB中的数据量越来越大,数据分析团队从数据库中抽取变化数据(假如依据栏位createdatetime,transdatetime),越来越困难.我们知道MongoDB的 ...
- sqlmap 基本应用
sqlmap 基本应用: sqlmap详细命令: -is-dba 当前用户权限(是否为root权限) -dbs 所有数据库 -current-db 网站当前数据库 -users 所有数据库用户 -cu ...
- SourceTree下载bitbucket代码
SourceTree安装方法 下载地址:https://www.sourcetreeapp.com/ 列几个安装过程中的注意点: 根URL(Root URL):https://bitbucket.or ...