Java代码
1. package org.idcn.util
2.
3. import java.io.InputStream;
4. import java.sql.Connection;
5. import java.sql.Date;
6. import java.sql.PreparedStatement;
7. import java.sql.ResultSet;
8. import java.sql.SQLException;
9. import java.sql.Time;
10. import java.sql.Timestamp;
11. import javax.sql.DataSource;
12.
13. /**
14. * This class encapsulation the Connection and PreparedStatement
15. * deal with database
16. *
17. * It be designed as a singleton class
18. *
19. * @author zdxue
20. *
21. */
22. public class DBUtil {
23. private Connection conn = null; //Connection object
24. private PreparedStatement prepStmt = null; //PreparedStatement object
25.
26. /**
27. * create DBUtil with Connection and sql
28. *
29. * @param conn Connection
30. * @param sql sql statement
31. * @throws SQLException if occur database access wrong
32. */
33. private DBUtil(Connection conn, String sql) throws SQLException {
34. this.conn = conn;
35. prepStmt = conn.prepareStatement(sql,
36. ResultSet.TYPE_SCROLL_INSENSITIVE,
37. ResultSet.CONCUR_READ_ONLY);
38. }
39.
40. /**
41. * create DBUtil with dataSource and sql
42. *
43. * @param ds DataSource
44. * @param sql sql statement
45. * @throws SQLException if occur database access wrong
46. */
47. private DBUtil(DataSource ds, String sql) throws SQLException {
48. conn = ds.getConnection();
49. prepStmt = conn.prepareStatement(sql,
50. ResultSet.TYPE_SCROLL_INSENSITIVE,
51. ResultSet.CONCUR_READ_ONLY);
52. }
53.
54. /**
55. * the static method to get DBUtil instance
56. *
57. * @param connection java.sql.Connection
58. * @param sql sql statement
59. * @return DBUtil DBUtil instance
60. * @throws SQLException if occur database access wrong
61. */
62. public static DBUtil getInstance(Connection connection, String sql) throws SQLException {
63. return new DBUtil(connection, sql);
64. }
65.
66. /**
67. * static method to get DBUtil instance
68. *
69. * @param dataSource dataSource
70. * @param sql sql statement
71. * @return DBUtil DBUtil instance
72. * @throws SQLException if occur database access wrong
73. */
74. public static DBUtil getInstance(DataSource dataSource, String sql) throws SQLException {
75. return new DBUtil(dataSource, sql);
76. }
77.
78. /**
79. * get Connection
80. *
81. * @return connection java.sql.Conncetion instance
82. */
83. public Connection getConnection() {
84. return conn;
85. }
86.
87. /**
88. * get preparedStatement
89. *
90. * @return preparedStatement java.sql.preparedStatement instance
91. */
92. public PreparedStatement getPreparedStatement() {
93. return prepStmt;
94. }
95.
96. /**
97. * execute Query from database
98. *
99. * @return ResultSet
100. * @throws SQLException if occur database access wrong
101. */
102. public ResultSet executeQuery() throws SQLException {
103. return prepStmt.executeQuery();
104. }
105.
106. /**
107. * execute update to the database
108. *
109. * @throws SQLException if occur database access wrong
110. */
111. public int executeUpdate() throws SQLException {
112. if(prepStmt == null)
113. return 0;
114. return prepStmt.executeUpdate();
115. }
116.
117. /**
118. * close the connection and preparedStatment
119. */
120. public void close() {
121. try {
122. if (prepStmt != null) {
123. prepStmt.close();
124. prepStmt = null;
125. }
126. if(conn != null) {
127. conn.close();
128. conn = null;
129. }
130. } catch (Exception e) {
131. }
132. }
133.
134. /**
135. * set the String value for the preparedStatement
136. *
137. * @param index the first parameter is 1, seconed is 2, and so on.
138. * @param value String parameter value
139. * @throws SQLException if occur database access wrong
140. */
141. public void setString(int index,String value) throws SQLException {
142. prepStmt.setString(index,value);
143. }
144.
145. /**
146. * set the int value for the preparedStatement
147. *
148. * @param index the first parameter is 1, seconed is 2, and so on.
149. * @param value int parameter value
150. * @throws SQLException if occur database access wrong
151. */
152. public void setInt(int index,int value) throws SQLException {
153. prepStmt.setInt(index,value);
154. }
155.
156. /**
157. * set the Double value for the preparedStatement
158. *
159. * @param index the first parameter is 1, seconed is 2, and so on.
160. * @param value Double parameter value
161. * @throws SQLException if occur database access wrong
162. */
163. public void setDouble(int index,Double value) throws SQLException {
164. prepStmt.setDouble(index, value);
165. }
166.
167. /**
168. * set the boolean value for the preparedStatement
169. * @param index the first parameter is 1, seconed is 2, and so on.
170. * @param value boolean parameter value
171. * @throws SQLException if occur database access wrong
172. */
173. public void setBoolean(int index,boolean value) throws SQLException {
174. prepStmt.setBoolean(index,value);
175. }
176.
177. /**
178. * set the Date value for the preparedStatement
179. *
180. * @param index the first parameter is 1, seconed is 2, and so on.
181. * @param value Date parameter value
182. * @throws SQLException if occur database access wrong
183. */
184. public void setDate(int index,Date value) throws SQLException {
185. prepStmt.setDate(index,value);
186. }
187.
188. /**
189. * set the Time value for the preparedStatement
190. *
191. * @param index the first parameter is 1, seconed is 2, and so on.
192. * @param value Time parameter value
193. * @throws SQLException if occur database access wrong
194. */
195. public void setTime(int index,Time value) throws SQLException {
196. prepStmt.setTime(index,value);
197. }
198.
199. /**
200. * set the TimeStampe value for the preparedStatement
201. *
202. * @param index the first parameter is 1, seconed is 2, and so on.
203. * @param value java.sql.Timestamp parameter value
204. * @throws SQLException if occur database access wrong
205. */
206. public void setTimestamp(int index,Timestamp value) throws SQLException {
207. prepStmt.setTimestamp(index,value);
208. }
209.
210. /**
211. * set the long value for the preparedStatement
212. *
213. * @param index the first parameter is 1, seconed is 2, and so on.
214. * @param value long parameter value
215. * @throws SQLException if occur database access wrong
216. */
217. public void setLong(int index,long value) throws SQLException {
218. prepStmt.setLong(index,value);
219. }
220.
221. /**
222. * set the float value for the preparedStatement
223. *
224. * @param index the first parameter is 1, seconed is 2, and so on.
225. * @param value float parameter value
226. * @throws SQLException if occur database access wrong
227. */
228. public void setFloat(int index,float value) throws SQLException {
229. prepStmt.setFloat(index,value);
230. }
231.
232. /**
233. * set the Object value for the preparedStatement
234. *
235. * @param index the first parameter is 1, seconed is 2, and so on.
236. * @param obj Object parameter value
237. * @throws SQLException if occur database access wrong
238. */
239. public void setObject(int index, Object obj) throws SQLException {
240. prepStmt.setObject(index, obj);
241. }
242.
243. /**
244. * set binaryStream
245. *
246. * @param index the first parameter is 1, seconed is 2, and so on.
247. * @param in binayStream
248. * @param length the byte length of the stream
249. * @throws SQLException if occur database access wrong
250. */
251. public void setBinaryStream(int index,InputStream in,int length) throws SQLException {
252. prepStmt.setBinaryStream(index,in,length);
253. }
254.
255. /**
256. * transaction commit
257. */
258. public void commit() {
259. try {
260. conn.commit();
261. } catch(Exception e) {
262. e.printStackTrace();
263. }
264. }
265.
266. /**
267. * transaction rollback
268. */
269. public void rollback() {
270. try {
271. conn.rollback();
272. }
273. catch(Exception e) {
274. e.printStackTrace();
275. }
276. }
277. }
package org.idcn.util
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Time;
import java.sql.Timestamp;
import javax.sql.DataSource;
/**
* This class encapsulation the Connection and PreparedStatement
* deal with database
*
* It be designed as a singleton class
*
* @author zdxue
*
*/
public class DBUtil {
private Connection conn = null; //Connection object
private PreparedStatement prepStmt = null; //PreparedStatement object
/**
* create DBUtil with Connection and sql
*
* @param conn Connection
* @param sql sql statement
* @throws SQLException if occur database access wrong
*/
private DBUtil(Connection conn, String sql) throws SQLException {
this.conn = conn;
prepStmt = conn.prepareStatement(sql,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}
/**
* create DBUtil with dataSource and sql
*
* @param ds DataSource
* @param sql sql statement
* @throws SQLException if occur database access wrong
*/
private DBUtil(DataSource ds, String sql) throws SQLException {
conn = ds.getConnection();
prepStmt = conn.prepareStatement(sql,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}
/**
* the static method to get DBUtil instance
*
* @param connection java.sql.Connection
* @param sql sql statement
* @return DBUtil DBUtil instance
* @throws SQLException if occur database access wrong
*/
public static DBUtil getInstance(Connection connection, String sql) throws SQLException {
return new DBUtil(connection, sql);
}
/**
* static method to get DBUtil instance
*
* @param dataSource dataSource
* @param sql sql statement
* @return DBUtil DBUtil instance
* @throws SQLException if occur database access wrong
*/
public static DBUtil getInstance(DataSource dataSource, String sql) throws SQLException {
return new DBUtil(dataSource, sql);
}
/**
* get Connection
*
* @return connection java.sql.Conncetion instance
*/
public Connection getConnection() {
return conn;
}
/**
* get preparedStatement
*
* @return preparedStatement java.sql.preparedStatement instance
*/
public PreparedStatement getPreparedStatement() {
return prepStmt;
}
/**
* execute Query from database
*
* @return ResultSet
* @throws SQLException if occur database access wrong
*/
public ResultSet executeQuery() throws SQLException {
return prepStmt.executeQuery();
}
/**
* execute update to the database
*
* @throws SQLException if occur database access wrong
*/
public int executeUpdate() throws SQLException {
if(prepStmt == null)
return 0;
return prepStmt.executeUpdate();
}
/**
* close the connection and preparedStatment
*/
public void close() {
try {
if (prepStmt != null) {
prepStmt.close();
prepStmt = null;
}
if(conn != null) {
conn.close();
conn = null;
}
} catch (Exception e) {
}
}
/**
* set the String value for the preparedStatement
*
* @param index the first parameter is 1, seconed is 2, and so on.
* @param value String parameter value
* @throws SQLException if occur database access wrong
*/
public void setString(int index,String value) throws SQLException {
prepStmt.setString(index,value);
}
/**
* set the int value for the preparedStatement
*
* @param index the first parameter is 1, seconed is 2, and so on.
* @param value int parameter value
* @throws SQLException if occur database access wrong
*/
public void setInt(int index,int value) throws SQLException {
prepStmt.setInt(index,value);
}
/**
* set the Double value for the preparedStatement
*
* @param index the first parameter is 1, seconed is 2, and so on.
* @param value Double parameter value
* @throws SQLException if occur database access wrong
*/
public void setDouble(int index,Double value) throws SQLException {
prepStmt.setDouble(index, value);
}
/**
* set the boolean value for the preparedStatement
* @param index the first parameter is 1, seconed is 2, and so on.
* @param value boolean parameter value
* @throws SQLException if occur database access wrong
*/
public void setBoolean(int index,boolean value) throws SQLException {
prepStmt.setBoolean(index,value);
}
/**
* set the Date value for the preparedStatement
*
* @param index the first parameter is 1, seconed is 2, and so on.
* @param value Date parameter value
* @throws SQLException if occur database access wrong
*/
public void setDate(int index,Date value) throws SQLException {
prepStmt.setDate(index,value);
}
/**
* set the Time value for the preparedStatement
*
* @param index the first parameter is 1, seconed is 2, and so on.
* @param value Time parameter value
* @throws SQLException if occur database access wrong
*/
public void setTime(int index,Time value) throws SQLException {
prepStmt.setTime(index,value);
}
/**
* set the TimeStampe value for the preparedStatement
*
* @param index the first parameter is 1, seconed is 2, and so on.
* @param value java.sql.Timestamp parameter value
* @throws SQLException if occur database access wrong
*/
public void setTimestamp(int index,Timestamp value) throws SQLException {
prepStmt.setTimestamp(index,value);
}
/**
* set the long value for the preparedStatement
*
* @param index the first parameter is 1, seconed is 2, and so on.
* @param value long parameter value
* @throws SQLException if occur database access wrong
*/
public void setLong(int index,long value) throws SQLException {
prepStmt.setLong(index,value);
}
/**
* set the float value for the preparedStatement
*
* @param index the first parameter is 1, seconed is 2, and so on.
* @param value float parameter value
* @throws SQLException if occur database access wrong
*/
public void setFloat(int index,float value) throws SQLException {
prepStmt.setFloat(index,value);
}
/**
* set the Object value for the preparedStatement
*
* @param index the first parameter is 1, seconed is 2, and so on.
* @param obj Object parameter value
* @throws SQLException if occur database access wrong
*/
public void setObject(int index, Object obj) throws SQLException {
prepStmt.setObject(index, obj);
}
/**
* set binaryStream
*
* @param index the first parameter is 1, seconed is 2, and so on.
* @param in binayStream
* @param length the byte length of the stream
* @throws SQLException if occur database access wrong
*/
public void setBinaryStream(int index,InputStream in,int length) throws SQLException {
prepStmt.setBinaryStream(index,in,length);
}
/**
* transaction commit
*/
public void commit() {
try {
conn.commit();
} catch(Exception e) {
e.printStackTrace();
}
}
/**
* transaction rollback
*/
public void rollback() {
try {
conn.rollback();
}
catch(Exception e) {
e.printStackTrace();
}
}
}
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
* 在繁琐中挣扎还是简化自主管理?
* IBM Rational软件开发高峰论坛9月揭幕
* 下载免费的 IBM DB2 Express-C 数据库
返回顶楼
最后修改:2008-11-27
* hanjs
* 等级: 初级会员
* 用户头像
* 文章: 111
* 积分: 0
* 来自: 大连
*
发表时间:2008-12-26
引用 收藏
1、传入的conn应该先设置autocommit=false
2、应该使用threadlocal,可以处理多个方法调用的时候,在一个连接内控制事务