1. package com.aaa.util;
  2.  
  3. import java.sql.*;
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8.  
  9. /**
  10. * JDBC工具类?
  11. * 一、增删改的通用方法
  12. * 二、查询的通用方法
  13. * 三、关闭的通用方法
  14. */
  15. public class DBUtil {
  16.  
  17. static {
  18. try {
  19. Class.forName("com.mysql.jdbc.Driver");
  20. } catch (ClassNotFoundException e) {
  21. e.printStackTrace();
  22. }
  23. }
  24.  
  25. public static Connection getConnection(){
  26. try {
  27. return DriverManager.getConnection("jdbc:mysql://localhost:3306/qy66?characterEnconding=UTF-8", "root", "root");
  28. } catch (SQLException e) {
  29. e.printStackTrace();
  30. }
  31. return null;
  32. }
  33. /** 增删改的通用方法
  34. * @paramString sql 要执行的sql
  35. * @paramObject[] obj 对象类型的数组 里面存放着 sql执行的占位符参数
  36. * 【name,age,id】
  37. * 【id】
  38. * 【name,age】
  39. * Object... 可变参数
  40. * */
  41. public static boolean executeUpdate(String sql,Object... args){
  42. Connection conn = null;
  43. PreparedStatement ps = null;
  44. try {
  45. conn = getConnection();
  46. ps = conn.prepareStatement(sql);
  47.  
  48. for (int i=0;i<args.length;i++){
  49. ps.setObject(i+1,args[i]);
  50. }
  51. int i = ps.executeUpdate();
  52.  
  53. if (i>0)return true;
  54. } catch (SQLException e) {
  55. e.printStackTrace();
  56. } finally {
  57. //关闭
  58. close(conn,ps,null);
  59. }
  60. return false;
  61. }
  62.  
  63. /**
  64. * c查询的通用方法
  65. * @param sql
  66. * @param args
  67. * @return
  68. */
  69. public static List<Map<String,Object>> executeQuery(String sql,Object... args){ //可变参数 Object... args
  70. Connection conn = null;
  71. PreparedStatement ps = null;
  72. ResultSet set = null;
  73. try {
  74. conn = DBUtil.getConnection();
  75. ps = conn.prepareStatement(sql);
  76. /* 有可能有参数 */
  77. for (int i=0;i<args.length;i++){
  78. ps.setObject(i+1,args[i]);
  79. }
  80. /*执行*/
  81. set = ps.executeQuery();
  82. /*需要将所有数据都存放到 List中 每一行 用一个 map存放*/
  83. List<Map<String,Object>> list = new ArrayList<>();
  84. /*获取本次查询结果集有多少列*/
  85. int count = set.getMetaData().getColumnCount();
  86.  
  87. while(set.next()){
  88. Map<String, Object> map = new HashMap<>();//一行数据 用一个map 接收
  89. /*
  90. 我们不用在乎数据库表中有几列
  91. 通过 getMetData().getColumnLabel() 获取列
  92. 因为用的map键值对集合 得到了列 就能得到相应的values值
  93.  
  94. */
  95. for(int i=0;i<count;i++){
  96. String name = set.getMetaData().getColumnLabel(i+1);
  97. map.put(name,set.getObject(name));
  98. }
  99. /*将每行的map存放到 List中*/
  100. list.add(map);
  101. }
  102. return list;
  103. } catch (Exception e) {
  104. e.printStackTrace();
  105. }finally {
  106. close(conn,ps,set);
  107. }
  108. return null;
  109. }
  110.  
  111. /** 关闭的通用方法
  112. * 先进后出的原则
  113. * */
  114. private static void close(Connection conn,PreparedStatement st,ResultSet set){
  115. try {
  116. if(set!=null){
  117. set.close();
  118. }
  119. if(st!=null){
  120. st.close();
  121. }
  122. if(conn != null){
  123. conn.close();
  124. }
  125. }catch (Exception e){
  126. e.printStackTrace();
  127. }
  128. }
  129.  
  130. }

JDBC工具类完整版!的更多相关文章

  1. 开源JDBC工具类DbUtils

    本篇将会详细地介绍Apache公司的JDBC帮助工具类DbUtils以及如何使用.在上一篇中我们已经通过将以前对dao层使用JDBC操作数据库的冗余代码进行了简易封装形成自己的简单工具类JdbcUti ...

  2. JDBC基础:JDBC快速入门,JDBC工具类,SQL注入攻击,JDBC管理事务

    JDBC基础 重难点梳理 一.JDBC快速入门 1.jdbc的概念 JDBC(Java DataBase Connectivity:java数据库连接)是一种用于执行SQL语句的Java API,可以 ...

  3. MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. java使用注解和反射打造一个简单的jdbc工具类

    a simple jdbc tools 如有转载和引用,请注明出处,谢谢 1. 定义我们需要的注解 要想实现对数据库的操作,我们必须知道数据表名以及表中的字段名称以及类型,正如hibernate 使用 ...

  6. MySQL JDBC事务处理、封装JDBC工具类

    MySQL数据库学习笔记(十)----JDBC事务处理.封装JDBC工具类 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit. ...

  7. DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

    DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类) 一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据 ...

  8. JDBC第三篇--【事务、元数据、改造JDBC工具类】

    这是我JDBC的第一篇 http://blog.csdn.net/hon_3y/article/details/53535798 这是我JDBC的第二篇 http://blog.csdn.net/ho ...

  9. JDBC【事务、元数据、改造JDBC工具类】

    1.事务 一个SESSION所进行的所有更新操作要么一起成功,要么一起失败 举个例子:A向B转账,转账这个流程中如果出现问题,事务可以让数据恢复成原来一样[A账户的钱没变,B账户的钱也没变]. 事例说 ...

随机推荐

  1. Java开发笔记(七十三)常见的程序异常

    一个程序开发出来之后,无论是用户还是程序员,都希望它稳定地运行,然而程序毕竟是人写的,人无完人哪能不犯点错误呢?就算事先考虑得天衣无缝,揣着一笔巨款跑去岛国买了栋抗震性能良好的海边别墅,谁料人算不如天 ...

  2. JDK8新特性:default方法的应用实践

    背景: 最近维护一个老旧工程,遇到集团层面的数据安全改造,需要在DAO层做加解密改造.而这个老旧工程的DAO层是用的JdbcTemplate实现的,尽管template方式实现起来可自由发挥的空间很大 ...

  3. CTSC 2018酱油记

    Day0 5.5 花了一上午的时间把codechef div2的前四题切了,又在zbq老司机的指导下把第五题切了 中午12:00 gryz电竞组从机房出发,临走的时候看到很多学长挺恋恋不舍的,毕竟可能 ...

  4. #WEB安全基础 : HTML/CSS | 0x8CSS进阶

    你以为自己学这么点CSS就厉害了? 学点新东西吧,让你的网页更漂亮 我们只需要用到图片和网页   这是index.html的代码 <html> <head> <title ...

  5. 驰骋工作流引擎JFlow与activiti的对比 -总结

    共同点: 1. 嵌入式的工作流引擎,降低集群复杂性. 2. 严格而灵活的流程版本控制 3. 支持多种数据库 4. 支持多种流程设计模式 5. 成熟度高的开源工作流,具有可靠的稳定性和性能. 区别: 1 ...

  6. 从.Net到Java学习第三篇——spring boot+mybatis+mysql

    从.Net到Java学习第一篇——开篇 环境:mysql5.7 新建mysql数据库demo,然后执行如下sql脚本进行数据表创建和数据初始化: -- ------------------------ ...

  7. android 摇一摇+震动+声音效果

    文章链接:https://mp.weixin.qq.com/s/n6EXvfmpNPtWM1kEnGgwUA 摇一摇红包效果已经是老生常谈的了,利用手机的传感器识别摇一摇,同时过程中进行动画+震动+声 ...

  8. 单台MongoDB实例开启Oplog

    背景 随着数据的积累,MongoDB中的数据量越来越大,数据分析团队从数据库中抽取变化数据(假如依据栏位createdatetime,transdatetime),越来越困难.我们知道MongoDB的 ...

  9. sqlmap 基本应用

    sqlmap 基本应用: sqlmap详细命令: -is-dba 当前用户权限(是否为root权限) -dbs 所有数据库 -current-db 网站当前数据库 -users 所有数据库用户 -cu ...

  10. SourceTree下载bitbucket代码

    SourceTree安装方法 下载地址:https://www.sourcetreeapp.com/ 列几个安装过程中的注意点: 根URL(Root URL):https://bitbucket.or ...