java操作数据库小工具--韩顺平SqlHelper
看韩顺平老师的视频时候非常喜欢的喜欢的一个小工具就是操作数据库的SqlHelper
所以我就又写了一遍,加了点注释,基本上能满足平常开发使用。
DBUtil类,主要是操作数据连接池
- package com.tig.util;
- import java.io.InputStream;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.Statement;
- import java.util.Properties;
- public class DBUtil {
- //定义链接所需要的变量
- private static Connection con = null;
- private static PreparedStatement ps = null;
- private static ResultSet rs = null;
- //定义链接数据库所需要的参数
- private static String url = "";
- private static String username = "";
- private static String driver="";
- private static String password="";
- //定义读取配置文件所需要的变量
- private static Properties pp = null;
- private static InputStream fis = null;
- /**
- * 加载驱动
- */
- static {
- try {
- //从dbinfo.properties配置文件中读取配置信息
- pp = new Properties();
- fis = DBUtil.class.getClassLoader().getResourceAsStream("com/tig/util/dbinfo.properties");
- pp.load(fis);
- url = pp.getProperty("url");
- username = pp.getProperty("username");
- driver=pp.getProperty("driver");
- password=pp.getProperty("password");
- //加载驱动
- Class.forName(driver);
- } catch (Exception e) {
- System.out.println("驱动加载失败!");
- e.printStackTrace();
- } finally {
- try {
- fis.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- fis = null; //垃圾回收自动处理
- }
- }
- /**
- * 得到Connection链接
- * @return Connection
- */
- public static Connection getConnection() {
- try {
- //建立连接
- con = DriverManager.getConnection(url, username, password);
- } catch (Exception e) {
- System.out.println("数据库链接失败!");
- e.printStackTrace();
- }
- return con;
- }
- /**
- * 统一的资源关闭函数
- * @param rs
- * @param ps
- * @param ct
- */
- public static void close(ResultSet rs,Statement ps, Connection con){
- if(rs != null) {
- try {
- rs.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- if(ps != null) {
- try {
- ps.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- if(con != null) {
- try {
- con.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
SqlHelper类
- package com.tig.util;
- import java.sql.CallableStatement;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.ResultSetMetaData;
- import java.util.ArrayList;
- import java.util.List;
- public class SqlHelper {
- private static Connection con = null;
- private static PreparedStatement ps = null;
- private static ResultSet rs = null;
- private static CallableStatement cs = null;
- /**
- * 提供查询方法
- * @param sql sql语句
- * @param parameters 给问号赋值的参数组
- * @return {@link ArrayList}
- */
- public static ArrayList executeQuery(String sql, String[] parameters) {
- ArrayList al = new ArrayList();
- try {
- con = DBUtil.getConnection();
- ps = con.prepareStatement(sql);
- //给sql语句中的问号赋值
- if (parameters != null) {
- for (int i = 0; i < parameters.length; i++) {
- ps.setObject(i+1, parameters[i]);
- }
- }
- rs = ps.executeQuery();
- //得到结果集(rs)的结构
- ResultSetMetaData rsmd = rs.getMetaData();
- //通过rsmd可以得到该结果集有多少列
- int columnNum = rsmd.getColumnCount();
- //从rs中取出数据,并且封装到ArrayList中
- while (rs.next()) {
- Object []objects = new Object[columnNum];
- for(int i = 0; i < objects.length; i++) {
- objects[i] = rs.getObject(i + 1);
- }
- al.add(objects);
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- DBUtil.close(rs, ps, con);
- }
- return al;
- }
- /**
- * 提供统一的插入/删除/更新方法
- * @param sql sql语句
- * @param parameteres 给问号赋值的参数组
- * @return
- */
- public static boolean executeUpdate(String sql,String[] parameteres) {
- boolean success = false;
- try {
- con = DBUtil.getConnection();
- ps = con.prepareStatement(sql);
- //给问号赋值
- if (parameteres != null) {
- for (int i = 0; i < parameteres.length; i++) {
- ps.setString(i + 1, parameteres[i]);
- }
- }
- //执行动作,如果返回“1” 则为操作成功
- if (ps.executeUpdate() == 1) {
- success = true;
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- DBUtil.close(rs, ps, con);
- }
- return success;
- }
- /**
- * 提供统一的插入/删除/更新方法[需要考虑事物]
- * @param sql
- * @param parameters
- */
- public static void executeUpdate(String sql[], String[][] parameters){
- try {
- con = DBUtil.getConnection();
- //sql命令的提交由应用程序负责,程序必须调用commit或者rollback方法
- con.setAutoCommit(false);
- for (int i = 0; i < sql.length; i++) {
- if (parameters[i] != null) {
- ps = con.prepareStatement(sql[i]);
- for (int j = 0; j < parameters[i].length; i++){
- ps.setString(j + 1, parameters[i][j]);
- }
- ps.executeUpdate();
- }
- }
- con.commit();
- } catch (Exception e) {
- e.printStackTrace();
- //回滚操作
- try {
- con.rollback();
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- throw new RuntimeException(e.getMessage());
- } finally {
- DBUtil.close(rs, ps, con);
- }
- }
- }
dbinfo.properties 配置文件.主要配置一下数据库的名字,用户名,密码
- url=jdbc:mysql://localhost:3306/studentinfo
- username=root
- driver=com.mysql.jdbc.Driver
- password=1234
java操作数据库小工具--韩顺平SqlHelper相关推荐
- java redis remove_最全的Java操作Redis的工具类
RedisUtil 当前版本:1.1 增加更全的方法,对以前的部分方法进行了规范命名,请放心替换成新版本. 介绍 最全的Java操作Redis的工具类,使用StringRedisTemplate实现, ...
- Java操作数据库方式二DBCP使用详解
##概述 DBCP的全称是:DataBase connection pool,翻译是:数据库连接池. 在Java操作数据库方式一JDBC使用详解中说到直接使用JDBC非常消耗资源.为了避免频繁关闭链接 ...
- 数据库中clob类型对应java,java 操作数据库clob类型大字段
java 操作数据库clob类型大字段 java 操作数据库clob类型大字段,处理工具类如下: package org.shefron.utils; import java.io.StringRea ...
- mysql model first,一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具
一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具 Intro DbTool 是一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具,原本 ...
- 使用.NET开发的数据库小工具 DbTool
数据库小工具 DbTool Intro DbTool 一个支持 DbFirst.ModelFirst 和 CodeFirst 的数据库小工具. DbFirst 是根据数据库中的表信息生成代码中的 Mo ...
- 一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具
一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具 Intro DbTool 是一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具,原本 ...
- 理解Java操作数据库原理
2019独角兽企业重金招聘Python工程师标准>>> 参考:https://blog.csdn.net/xiaozhegaa/article/details/70208646 上面 ...
- Java操作数据库方式(六)DataSource详解
##概述 在java世界里操作数据库有很多方式,在众多方式中除了JDBC外都有DataSource对象. DataSource可以看作数据源,它封装了数据库参数,连接数据库,程序中操作DataSour ...
- java操作excel的工具
jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文 ...
最新文章
- 蓝桥杯 校门外面的树 (线段树,区间处理)
- GBDT算法原理及附有源码实现的 转
- Successor,Fesible Successor,FD,AD,eigrp
- 管理表空间和数据文件——维护表空间——改变表空间的读写状态和改变表空间名称...
- 设计模式:KISS、YAGNI、DRY 原则,迪米特法则(LOD)
- LeetCode-有效的字母异位词
- 那些年困扰我们的Linux 的蠕虫、病毒和木马
- linux系统用w程序,Linux w命令
- 如何访问SSH公钥?
- 服务器应用程序不可用的解决方法
- 2018_09_21_生活记录_参加人工智能大会
- jsp简单案例(供小白学习)
- Unity ToLua LuaFramework_UGUI学习笔记
- python爬取上市公司年报信息_python3爬取巨潮资讯网的年报数据
- 新版 | 小O地图V0.9.2.0
- 基于反馈电阻法的恒流源小信号的检测
- MyBatis从入门到精通(一)—MyBatis基础知识和快速入门
- 设计模式学习笔记(二十一:访问者模式)
- web字体格式及几种在线格式转换工具介绍
- 成都java培训要多少钱