我们打造的简易jdbc数据库管理工具:DatabaseHelper,轻松便捷操作数据库
最编程
2024-07-23 12:30:00
...
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 }
关于这个数据库类的说明在类的头部注释中已经说的很清楚了,如果有什么不对或者有什么地方需要改进的,麻烦各位指正!
关于这个数据库类的说明在类的头部注释中已经说的很清楚了,如果有什么不对或者有什么地方需要改进的,麻烦各位指正!