JDBC工具类
来源:互联网 发布:交通优化 编辑:程序博客网 时间:2024/06/10 00:16
由于工作需要,自己造了一个JDBC的工具类。虽然有重复造轮子的嫌疑,不过适用自己的才是最好的。这个工具类包含了基本的CRUD功能以及封装好的返回map和list功能,算是简单的提升了一些工作效率,现在记录一下,一方面方便自己日后查找,另一方面也是分享给大家,如果有需要可以做个参考。欢迎高手指导。
import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.naming.NamingException;public class DBConnection { private static String url=Global.DBURL; private static String user=Global.USER; private static String pwd=Global.PWD; private Connection dbConn = null; private Statement stmt=null; private PreparedStatement pstmt = null; private ResultSet rs=null; /*加载数据库驱动*/ private Connection getconnection(){ try { Class.forName("com.mysql.jdbc.Driver"); dbConn = DriverManager.getConnection(url, user, pwd); } catch (Exception e) { e.printStackTrace(); } return dbConn; } /*获得Statement对象*/ private Statement getstatement() throws SQLException{ stmt=getconnection().createStatement(); return stmt; } // 获取语句对象 private PreparedStatement getPrepareStatement(String sql) throws NamingException, SQLException { pstmt = getconnection().prepareStatement(sql); return pstmt; } /*获得ResultSet对象*/ public ResultSet getResultSet(String sql) throws SQLException{ rs =getstatement().executeQuery(sql); return rs; } /*更新数据库*/ public int updateData(String sql) throws SQLException{ int result=0; try{ result=getstatement().executeUpdate(sql); }finally{ close(); } return result; } /*更新数据库*/ public int getGeneratedKeys(String sql) throws SQLException{ int id=0; try{ stmt=getconnection().createStatement(); stmt.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS); rs=stmt.getGeneratedKeys(); if (rs.next()) { id = rs.getInt(1); } }finally{ close(); } return id; } /*更新数据库*/ public int updateData(String sql,List<Object> params) throws SQLException, NamingException{ int recNo = 0;// 表示受影响的记录行数 try{ pstmt = this.getPrepareStatement(sql); for (int i = 0; i < params.size(); i++) pstmt.setObject(i + 1, params.get(i)); recNo = pstmt.executeUpdate();// 执行更新操作 }finally{ close(); } return recNo; } /*获得指定列的数据*/ public String getValue(String valueName,String sql) throws SQLException{ ResultSet rs; String result=null; try{ rs = getstatement().executeQuery(sql); if(rs.next()){ result= rs.getString(valueName); } }finally{ close(); } return result; } public static void main(String[] args) throws SQLException, NamingException { DBConnection db = new DBConnection(); String sql = "INSERT INTO car_emission (licensenumber,vin,enginenum,userid,orderstatus,createtime,isurgent) VALUES (?,?,?,?,?,?,?)"; List<Object> paramList = new ArrayList<Object>(); paramList.add("123"); paramList.add("vin"); paramList.add("ENG001"); paramList.add(701); paramList.add(1); paramList.add("2016-03-29 00:00:00"); paramList.add(1); db.updateData(sql, paramList); } /*关闭连接*/ public void close() { try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (dbConn != null) dbConn.close(); } catch (SQLException e) { e.printStackTrace(); } } /*批量处理多个sql,如果sql异常则回滚*/ public void updateSQLs(List<String> sqls) throws SQLException{ Connection conn =getconnection(); try { conn.setAutoCommit(false); stmt=conn.createStatement(); for(String sql:sqls){ stmt.execute(sql); } conn.commit(); conn.setAutoCommit(true); } catch (SQLException e) { conn.rollback(); throw e; } } // 遍历参数数组,将数组中的值按位置一一对应地对pstmt所代表的SQL语句中的参数进行设置 private void setParams(String sql, Object[] params) throws NamingException, SQLException { pstmt = this.getPrepareStatement(sql); for (int i = 0; i < params.length; i++) pstmt.setObject(i + 1, params[i]); } // 将结果集中封装成一个List private List<Map<String,Object>> getListFromRS() throws NamingException, SQLException { List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); // 获取元数据 ResultSetMetaData rsmd = rs.getMetaData(); while (rs.next()) { Map<String,Object> m = new HashMap<String,Object>(); for (int i = 1; i <= rsmd.getColumnCount(); i++) { // 获取当前行第i列的数据类型 String colType = rsmd.getColumnTypeName(i); // 获取当前行第i列的列名 String colName = rsmd.getColumnName(i); String s = rs.getString(colName); if (s != null) { if (colType.equals("INTEGER")||colType.equals("INT")) m.put(colName, new Integer(rs.getInt(colName))); else if (colType.equals("FLOAT")) m.put(colName, new Float(rs.getFloat(colName))); else{ // 其余类型均作为String对象取出 m.put(colName, rs.getString(colName)); //System.out.println("==="+m); } } } list.add(m); } return list; } // 查询获取List对象 public List<Map<String,Object>> getList(String sql, Object[] params) { List<Map<String,Object>> list = null;// 定义保存查询结果的集合对象 try { setParams(sql, params);// 根据sql语句和params,设置pstmt对象 rs = pstmt.executeQuery();// 执行SQL语句,得到结果集 list = getListFromRS();// 根据RS得到list } catch (Exception e) { e.printStackTrace(); } finally { close(); } return list; } public List<Map<String,Object>> getList(String sql) { return getList(sql, new Object[] {}); } // 查询获取Map对象 public Map<String,Object> getMap(String sql, Object[] params) { Map<String,Object> m = null; try { setParams(sql, params);// 根据sql语句和params,设置pstmt对象 rs = pstmt.executeQuery(); List<Map<String,Object>> l = getListFromRS(); if (l.size() != 0) m = l.get(0);// 根据RS得到Map } catch (Exception e) { LogUtils.writeLogByDay("DataErr", LogUtils.getStackMsg(e)); e.printStackTrace(); } finally { close(); } return m; } public Map<String,Object> getMap(String sql) { return getMap(sql, new Object[] {}); }}
0 0
- jdbc封装工具类
- JDBC工具类
- JDBC-数据库连接工具类
- JDBC工具类
- JDBC工具类
- JDBC数据库连接工具类
- jdbc工具类
- JDBC工具类
- JDBC首选工具类
- jdbc工具类
- jdbc事务工具类
- JDBC工具类
- JDBC的工具类
- JDBC 工具类
- JDBC工具类
- JDBC 工具类
- JDBC连接工具类
- JDBC封装工具类
- OPENCV系列(一)读取图像中任意点的像素值,并显示坐标
- MySQL全文索引 回避like 的低效
- Android回调机制
- linux常用命令
- iOS与unity3D简单交互
- JDBC工具类
- Sql语句中,Contains与Like查询结果不相同的问题
- Java正则表达式
- javaee之el表达式的运用
- Javascript使用postMessage对iframe跨域通信
- equals&&hashCode&&toString函数
- CodeForces 631C
- sql中contains,like,patindex ,charindex和freetext语句的区别?
- Spring探究(1)——功能特性