自定义的一个jdbc数据库管理类DatabaseHelper,方便易用

  1 package com.sit.utils;
  2 
  3 import java.sql.Connection;
  4 import java.sql.DriverManager;
  5 import java.sql.ResultSet;
  6 import java.sql.SQLException;
  7 import java.sql.Statement;
  8 
  9 /*
 10  * 采用单例模式设计该数据库访问类
 11  * 
 12  * 类结构:
 13  * 这个类包含唯一的DatabaseHelper对象,这个对象对整个应用程序来说是唯一的。
 14  * 这个类对象管理一个连接对象和一个回话对象,而这两个对象时可以关闭的,它们的
 15  * 关闭不会引起DatabaseHelper对象对象的销毁,当关闭后重新获取该DatabaseHelper对象
 16  * 时,将会重新初始化连接对象和回话对象。
 17  * 这样做的好处就是可以随时关闭数据库连接对象,当不再需要连接数据库或者暂时不用连接数据库
 18  * 的时候可以关闭它,这样可以减少连接数据库的数目也可以降低资源占用,是一种很好的优化方法。
 19  * 
 20  * -----------设计者:程明    
 21  * -----------时     间:2012-5-5
 22  * -----------QQ1204833748
 23  * */
 24 public class DatabaseHelper {
 25     private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
 26     private static final String dbUrl  = "jdbc:sqlserver://localhost:1433; DatabaseName=sit";
 27     private static final String dbUser = "sa";
 28     private static final String dbUserPwd = "lanche";
 29     
 30     // 全局的唯一对象
 31     private static DatabaseHelper dbHelper = null;
 32     
 33     // 连接对象
 34     private static Connection conn = null;
 35     // 会话对象
 36     private static Statement statement = null;
 37     
 38     /*
 39      * 私有的构造函数,用于连接数据库
 40      * */
 41     private DatabaseHelper(){
 42         if( !initConnection() ){
 43             System.out.println(" 初始化连接数据库对象或者回话对象失败,请检查如下设置:\n" +
 44                     "1,initConnection函数中个各个连接对象是否正确\n" +
 45                     "2,sqlserver2005的驱动包sqljdbc4是否导入该工程\n" +
 46                     "3,sqlserver2005的1433端口是否打开\n" +
 47                     "4,防火墙是否阻止1433端口远程访问数据库\n");
 48         }
 49     }
 50     
 51     /*
 52      * 初始化连接和回话对象
 53      * */
 54     private static boolean initConnection(){
 55         boolean bl = false;
 56         try{
 57             Class.forName( DRIVER );
 58             conn  = DriverManager.getConnection(dbUrl, dbUser, dbUserPwd);
 59             statement = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
 60             bl = true;
 61         }
 62         catch ( ClassNotFoundException cnfex ) {
 63             System.err.println("error:"+cnfex.getMessage() );
 64         }
 65         catch(SQLException sqle){
 66             System.out.println("error:"+sqle.getMessage());
 67         }
 68         return bl;
 69     }
 70     
 71     /*
 72      * 获取全局唯一的数据库连接对象
 73      * */
 74     public static DatabaseHelper getDBIntances(){
 75         if( dbHelper == null ){
 76             dbHelper = new DatabaseHelper();
 77         }
 78         if( conn == null ){
 79             initConnection();
 80         }
 81         return dbHelper;
 82     }
 83     
 84     /*
 85      * 通过sql语句获取对应的记录集
 86      * 当返回为null的时候表面获取失败
 87      * */
 88     public ResultSet getResult(String sql){
 89         ResultSet rs = null;
 90         if( dbHelper != null ){
 91             try{
 92                 rs = statement.executeQuery(sql);
 93             }
 94             catch(SQLException sqle){
 95                 System.out.println("error:"+sqle.getMessage());
 96             }
 97         }
 98         return rs;
 99     }
100     
101     /*
102      * 根据sql语句更新记录
103      * */
104     public boolean updateData(String sql){
105         boolean bl = false;
106         if( dbHelper != null ){
107             try{
108                 statement.executeUpdate( sql );
109                 conn.commit();
110                 bl = true;
111             }
112             catch(SQLException sqle){
113                 System.out.println(sqle.getMessage());
114             }
115         }
116         return bl;
117     }
118     
119     /*
120      * 关闭连接对象
121      * */
122     public static boolean closeConnection(){
123         boolean bl = false;
124         try{
125             statement.close();
126             statement = null;
127             conn.close();
128             conn = null;
129             bl = true;
130         }
131         catch(SQLException sqle){
132             System.out.println(sqle.getMessage());
133         }
134         return bl;
135     }
136 }
关于这个数据库类的说明在类的头部注释中已经说的很清楚了,如果有什么不对或者有什么地方需要改进的,麻烦各位指正!

转载于:https://www.cnblogs.com/cmlanche/articles/DatabaseHelper.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值