设为首页 收藏本站
查看: 730|回复: 0

[经验分享] 【转】Java版DBHelper【简单】(MySQL数据库)

[复制链接]

尚未签到

发表于 2016-10-19 03:41:20 | 显示全部楼层 |阅读模式

1、测试数据库
1.1 数据库数据
DSC0000.png
1.2 数据库结构
DSC0001.png
1.3 数据库脚本
  DROP TABLE IF EXISTS `school`.`student`;
  
  CREATE TABLE `school`.`student` (
  `id` int(11) NOT NULL default '0',
  `name` varchar(20) default NULL,
  `sex` varchar(10) default NULL,
  `age` int(10) default NULL,
  PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  
  INSERT INTO `student` VALUES ('201201', '张三', '男', '21');
  INSERT INTO `student` VALUES ('201202', '李四', '男', '22');
  INSERT INTO `student` VALUES ('201203', '王五', '女', '20');
  INSERT INTO `student` VALUES ('201204', '赵六', '男', '21');
  INSERT INTO `student` VALUES ('201205', '小红', '女', '19');
  INSERT INTO `student` VALUES ('201206', '小明', '男', '22');
2、DBHelper用法
2.1 增加【Add】
  【示例代码
  
  package com.hebut.util;
  
  public class DBHelperApp {
  
      /**
       * 增加【Add
       */
      public static void main(String[] args) {
          //第一种情况
          String sql1="Insert Into student Values ('201208', '张三', '', '21')";
          System.out.println(DBHelper.executeNonQuery(sql1));
         
          //第二种情况
          String sql2="Insert Into student Values (?,?,?,?)";
          Object[] obj = new Object[]{"201209","张三", "", "21"};
          System.out.println(DBHelper.executeNonQuery(sql2,obj));
      }
  }
  
  【运行结果
  1)控制台
  
  1
  1
  
  2)数据库
DSC0002.png
2.2 删除【Del】
  【示例代码
  
  package com.hebut.util;
  
  public class DBHelperApp {
  
      /**
       * 删除【Del
       */
      public static void main(String[] args) {
          //第一种情况
          String sql1="Delete From student Where id='201202'";
          System.out.println(DBHelper.executeNonQuery(sql1));
         
          //第二种情况
          String sql2="Delete From student Where id=? And name=?";
          Object[] obj = new Object[]{"201208","张三"};
          System.out.println(DBHelper.executeNonQuery(sql2,obj));
      }
  
  }
  
  【运行结果
  1)控制台
  
  1
  1
  
  2)数据库
DSC0003.png
  从图中可以看出id为"201202"和"201208"已经删除。
2.3 修改【Update】
  【示例代码
  
  package com.hebut.util;
  
  public class DBHelperApp {
  
      /**
       * 修改【Update
       */
      public static void main(String[] args) {
          //第一种情况
          String sql1="Update student Set age='27' Where id='201207'";
          System.out.println(DBHelper.executeNonQuery(sql1));
         
          //第二种情况
          String sql2="Update student Set name=? Where id=?";
          Object[] obj = new Object[]{"张二","201201"};
          System.out.println(DBHelper.executeNonQuery(sql2,obj));
      }
  }
  
  【运行结果
  1)控制台
  
  1
  1
  
  2)数据库
DSC0004.png
  备注:后面的操作都以上面数据为基准。
2.4 查询【Query】
  【示例代码
  
  package com.hebut.util;
  
  import java.sql.ResultSet;
  import java.sql.SQLException;
  
  public class DBHelperApp {
  
      /**
       * 查询【Query
       * @throws SQLException
       */
      public static void main(String[] args) throws SQLException {
          //第一种情况
          String sql1="Select * From student";
          //第一步:查询
          ResultSet rs1 = DBHelper.executeQuery(sql1);
          //二步:输出
          while(rs1.next()){
              System.out.println("姓名:"+rs1.getString(2));
          }
          //第三步:关闭
          DBHelper.free(rs1);
         
          //第二种情况
          String sql2="Select * From student Where name=?";
          Object[] obj = new Object[]{"张三"};
          //第一步:查询
          ResultSet rs2 = DBHelper.executeQuery(sql2,obj);
          //第二步:输出
          while(rs2.next()){
              System.out.println("学号:"+rs2.getString(1));
          }
          //第三步:关闭
          DBHelper.free(rs2);
      }
  }
  
  【运行结果
  
  姓名:张二
  姓名:王五
  姓名:赵六
  姓名:小红
  姓名:小明
  姓名:张三
  姓名:张三
  学号:201207
  学号:201209
  
2.5 获取查询行数
  【示例代码
  
  package com.hebut.util;
  
  public class DBHelperApp {
  
      /**
       * 获取查询行数
       */
      public static void main(String[] args) {
          //第一种情况
          String sql1="Select * From student";
          System.out.println(DBHelper.getCount(sql1));
         
          //第二种情况
          String sql2="Select * From student Where name=?";
          Object[] obj = new Object[]{"张三"};
          System.out.println(DBHelper.getCount(sql2,obj));
      }
  }
  
  【运行结果
  
  7
  2
  
2.6 判断记录存在
  【示例代码
  
  package com.hebut.util;
  
  public class DBHelperApp {
  
      /**
       * 判断记录存在
       */
      public static void main(String[] args) {
          //第一种情况
          String sql1="Select * From student";
          System.out.println(DBHelper.isExist(sql1));
         
          //第二种情况
          String sql2="Select * From student Where name=?";
          Object[] obj = new Object[]{"张五"};
          System.out.println(DBHelper.isExist(sql2,obj));
      }
  }
  
  【运行结果
  
  true
  false
  
3、DBHelper代码
  
  package com.hebut.util;
  
  import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.PreparedStatement;
  import java.sql.ResultSet;
  import java.sql.SQLException;
  import java.sql.Statement;
  
  public final class DBHelper {
  
      // 此方法为获取数据库连接
      public static Connection getConnection() {
          Connection conn = null;
  
          try {
              String driver = "com.mysql.jdbc.Driver"; // 数据库驱动
              String url = "jdbc:MySQL://127.0.0.1:3306/school";// 数据库
              String user = "root"; // 用户名
              String password = "hadoop"; // 密码
              Class.forName(driver); // 加载数据库驱动
              if (null == conn) {
                  conn = DriverManager.getConnection(url, user, password);
              }
          } catch (ClassNotFoundException e) {
              System.out.println("Sorry,can't find the Driver!");
              e.printStackTrace();
          } catch (SQLException e) {
              e.printStackTrace();
          } catch (Exception e) {
              e.printStackTrace();
          }
          return conn;
      }
  
      /**
       * 增删改【AddDelUpdate
       *
       * @param sql
       * @return int
       */
      public static int executeNonQuery(String sql) {
          int result = 0;
          Connection conn = null;
          Statement stmt = null;
  
          try {
              conn = getConnection();
              stmt = conn.createStatement();
              result = stmt.executeUpdate(sql);
          } catch (SQLException err) {
              err.printStackTrace();
              free(null, stmt, conn);
          } finally {
              free(null, stmt, conn);
          }
  
          return result;
      }
  
      /**
       * 增删改【AddDeleteUpdate
       *
       * @param sql
       * @param obj
       * @return int
       */
      public static int executeNonQuery(String sql, Object... obj) {
          int result = 0;
          Connection conn = null;
          PreparedStatement pstmt = null;
  
          try {
              conn = getConnection();
              pstmt = conn.prepareStatement(sql);
  
              for (int i = 0; i < obj.length; i++) {
                  pstmt.setObject(i + 1, obj);
              }
  
              result = pstmt.executeUpdate();
          } catch (SQLException err) {
              err.printStackTrace();
              free(null, pstmt, conn);
          } finally {
              free(null, pstmt, conn);
          }
          return result;
      }
  
      /**
       * 查【Query
       *
       * @param sql
       * @return ResultSet
       */
      public static ResultSetexecuteQuery(String sql) {
          Connection conn = null;
          Statement stmt = null;
          ResultSetrs = null;
  
          try {
              conn = getConnection();
              stmt = conn.createStatement();
              rs = stmt.executeQuery(sql);
          } catch (SQLException err) {
              err.printStackTrace();
              free(rs, stmt, conn);
          }
  
          return rs;
      }
  
      /**
       * 查【Query
       *
       * @param sql
       * @param obj
       * @return ResultSet
       */
      public static ResultSetexecuteQuery(String sql, Object... obj) {
          Connection conn = null;
          PreparedStatement pstmt = null;
          ResultSetrs = null;
  
          try {
              conn = getConnection();
              pstmt = conn.prepareStatement(sql);
             
              for (int i = 0; i < obj.length; i++) {
                  pstmt.setObject(i + 1, obj);
              }
             
              rs = pstmt.executeQuery();
          } catch (SQLException err) {
              err.printStackTrace();
              free(rs, pstmt, conn);
          }
  
          return rs;
      }
  
      /**
       * 判断记录是否存在
       *
       * @param sql
       * @return Boolean
       */
      public static Boolean isExist(String sql) {
          ResultSetrs = null;
  
          try {
              rs = executeQuery(sql);
              rs.last();
              int count = rs.getRow();
              if (count > 0) {
                  return true;
              } else {
                  return false;
              }
          } catch (SQLException err) {
              err.printStackTrace();
              free(rs);
              return false;
          } finally {
              free(rs);
          }
      }
  
      /**
       * 判断记录是否存在
       *
       * @param sql
       * @return Boolean
       */
      public static Boolean isExist(String sql, Object... obj) {
          ResultSetrs = null;
  
          try {
              rs = executeQuery(sql, obj);
              rs.last();
              int count = rs.getRow();
              if (count > 0) {
                  return true;
              } else {
                  return false;
              }
          } catch (SQLException err) {
              err.printStackTrace();
              free(rs);
              return false;
          } finally {
              free(rs);
          }
      }
  
      /**
       * 获取查询记录的总行数
       *
       * @param sql
       * @return int
       */
      public static int getCount(String sql) {
          int result = 0;
          ResultSetrs = null;
  
          try {
              rs = executeQuery(sql);
              rs.last();
              result = rs.getRow();
          } catch (SQLException err) {
              free(rs);
              err.printStackTrace();
          } finally {
              free(rs);
          }
  
          return result;
      }
  
      /**
       * 获取查询记录的总行数
       *
       * @param sql
       * @param obj
       * @return int
       */
      public static int getCount(String sql, Object... obj) {
          int result = 0;
          ResultSetrs = null;
  
          try {
              rs = executeQuery(sql, obj);
              rs.last();
              result = rs.getRow();
          } catch (SQLException err) {
              err.printStackTrace();
          } finally {
              free(rs);
          }
  
          return result;
      }
  
      /**
       * 释放【ResultSet】资源
       *
       * @param rs
       */
      public static void free(ResultSetrs) {
          try {
              if (rs != null) {
                  rs.close();
              }
          } catch (SQLException err) {
              err.printStackTrace();
          }
      }
  
      /**
       * 释放【Statement】资源
       *
       * @param st
       */
      public static void free(Statement st) {
          try {
              if (st != null) {
                  st.close();
              }
          } catch (SQLException err) {
              err.printStackTrace();
          }
      }
  
      /**
       * 释放【Connection】资源
       *
       * @param conn
       */
      public static void free(Connection conn) {
          try {
              if (conn != null) {
                  conn.close();
              }
          } catch (SQLException err) {
              err.printStackTrace();
          }
      }
  
      /**
       * 释放所有数据资源
       *
       * @param rs
       * @param st
       * @param conn
       */
      public static void free(ResultSetrs, Statement st, Connection conn) {
          free(rs);
          free(st);
          free(conn);
      }
  }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-287988-1-1.html 上篇帖子: MySQL心得7-2-存储函数、触发器 下篇帖子: 详解MySQL数据库优化的方案与实践
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表