JDBC工具类

来源:互联网 发布:台湾用淘宝嘛 编辑:程序博客网 时间:2024/06/12 20:19

由于每次写JDBC引SQL语句很麻烦,所以就可以把JDBC封装呀,这样子以后调用起来就非常方便又简单了

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;public class DBUtil {private static final String URL="jdbc:mysql://localhost:3306/carsystem";//mysql数据库连接private static final String USER="root";//数据库用户名private static final String PASSWORD="root";//数据库密码private static Connection   conn=null;private static Statement    stmt=null;private static ResultSet    rs=null;private static PreparedStatement pstm=null;private static DBUtil db = null;private DBUtil(){}public static DBUtil getDB(){if(db==null){db = new DBUtil();}return db;}/** * @return 数据库连接 */private static Connection getConn(){System.out.println("-------------------------------");try {Class.forName("com.mysql.jdbc.Driver");System.out.println("加载驱动成功!");} catch (ClassNotFoundException e) {// TODO Auto-generated catch blockSystem.out.println("加载驱动失败,可能是没有引入数据库驱动包!");e.printStackTrace();}try {conn=DriverManager.getConnection(URL, USER, PASSWORD);System.out.println("【open 1】打开数据库连接成功!");} catch (SQLException e) {System.out.println("打开连接失败,可能是数据库服务没有开启,或者用户名密码不正确!");e.printStackTrace();}return conn;}/** * @param sql 一条sql语句 * @return 执行添加、删除、修改之后影响的行数 */public int executeUpdate(String sql){int rows=0;try{stmt=getConn().createStatement();//生成语句对象System.out.println("【open 2】生成语句对象");rows=stmt.executeUpdate(sql);}catch (Exception e){e.printStackTrace();}finally{close();}return rows;}/** * @param sql * @return 结果集对象 */public ResultSet executeQuery(String sql){try{stmt=getConn().createStatement();//生成语句对象System.out.println("【open 2】生成语句对象");rs=stmt.executeQuery(sql);System.out.println("【open 3】生成结果集对象");}catch(Exception e){e.printStackTrace();}return rs;}/** * @param sql * @return 返回查询结果封装对象list */public List<Map<String,Object>> list(String sql){ResultSetMetaData rsmd=null;List<Map<String,Object>> alist=new ArrayList<Map<String,Object>>();try {pstm=getConn().prepareStatement(sql);//生成预编译语句对象rsmd=pstm.getMetaData();//获取MetaData对象,内含字段个数,类型,名称int count=rsmd.getColumnCount();//获取查询结果字段个数rs=pstm.executeQuery(sql);//获取结果集对象System.out.println("【open 3】生成结果集对象");while(rs.next()){Map<String,Object> map=new HashMap<String,Object>();for(int i=1;i<=count;i++){String k=rsmd.getColumnLabel(i);String v=rs.getString(i);map.put(k, v);}alist.add(map);}return alist;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("ssssss");return null;}finally{close();}}/** * 关闭结果集对象、语句对象、连接对象 */private void close(){try{if(rs!=null){System.out.println("【close 3】关闭结果集对象");rs.close();}if(stmt!=null){System.out.println("【close 2】关闭语句对象");stmt.close();}if(conn!=null){System.out.println("【close 1】关闭数据连接");conn.close();}}catch(Exception e){e.printStackTrace();}System.out.println("-------------------------------");}}

单例模式的典型例子!

下一次就可以引包然后将工具类引入

格式可以为:DBUtil db=DBUtil.getDB();

1 0