自定义的一个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 }
关于这个数据库类的说明在类的头部注释中已经说的很清楚了,如果有什么不对或者有什么地方需要改进的,麻烦各位指正!
posted on 2012-05-07 10:05 cmlanche-明 阅读(616) 评论(0) 编辑 收藏 举报