Java通用DBHelper類
package com.wang.yjs.business.util;
import java.sql.*;
import java.util.*;
import javax.servlet.jsp.jstl.sql.*;
/**
* 通用的JDBC資料庫訪問類
* @author
* @version 1.0
* 2009年1月12
*/
public class DB {
private Connection conn;
private String sqlValue;
private List values;
/**
* 設定連線類
* @param conn 資料庫連線
*/
public void setConnection(Connection conn){
this.conn = conn;
}
/**
* 設定SQL語句
* @param values SQL語句
*/
public void setSqlValues(String sqlValue){
this.sqlValue = sqlValue;
}
/**
* 設定SQL語句的引數
* @param values SQL語句的引數
*/
public void setValues(List values){
this.values = values;
}
/**
* 執行查詢
* @return Result 資料結果集
* @throws SQLException
*/
public Result executeQuery() throws SQLException {
Result result = null;
ResultSet rs = null;
PreparedStatement pstmt = null;
Statement stmt = null;
try{
if(values != null && values.size() > 0){
pstmt = conn.prepareStatement(sqlValue);
setValues(pstmt, values);
rs = pstmt.executeQuery();
}else{
stmt = conn.createStatement();
rs = stmt.executeQuery(sqlValue);
}
result = ResultSupport.toResult(rs);
}finally{
closeRs(rs);
closeStmt(stmt);
closePstmt(pstmt);
sqlValue = null;
values = null;
}
return result;
}
/**
* 執行update語句
* @return 執行影響行數
* @throws SQLException
*/
public int executeUpdate() throws SQLException {
int noOfRows = 0;
PreparedStatement pstmt = null;
Statement stmt = null;
try{
if(values != null && values.size() > 0){
pstmt = conn.prepareStatement(sqlValue);
setValues(pstmt, values);
noOfRows = pstmt.executeUpdate();
}else{
stmt = conn.createStatement();
noOfRows = stmt.executeUpdate(sqlValue);
}
}finally{
closeStmt(stmt);
closePstmt(pstmt);
closeConn();
sqlValue = null;
values = null;
}
return noOfRows;
}
/**
* 設定語句的引數
* @param PreparedStatement 物件
* @param values 引數列表
* @throws SQLException
*/
private void setValues(PreparedStatement pstmt, List values) throws SQLException {
for(int i = 0; i < values.size(); i++){
Object v = values.get(i);
pstmt.setObject(i+1, v);
}
}
/**
* 關閉資料庫連線
*/
public void closeConn() {
try {
if(this.conn != null) {
this.conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 關閉 Statement
* @param stmt
*/
private void closeStmt(Statement stmt) {
try {
if(stmt != null) {
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 關閉 PreparedStatement
* @param pstmt
*/
private void closePstmt(PreparedStatement pstmt) {
if(pstmt != null){
try{
pstmt.close();
}catch(SQLException e){
//TODO
}
}
}
/**
* 關閉 ResultSet
* @param rs
*/
private void closeRs(ResultSet rs) {
try {
if(rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
測試通用DBHelper類
package com.wang.owbHome.business.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.*;
import javax.servlet.jsp.jstl.sql.Result;
import junit.framework.TestCase;
public class DBTest extends TestCase {
Connection conn = null;
protected void setUp() throws Exception {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;" +
"databaseName=QQDB;user=sa;password=123456a;");
}
/**
* 測試DB無參的查詢
*/
public void testDB_executeQuery(){
DB db = new DB();
db.setConnection(conn);
String sql1 = "select * from QQUser";
db.setSqlValues(sql1);
try {
Result rs = db.executeQuery();
if(rs == null || rs.getRowCount() == 0){
System.out.println("沒有結果");
}else{
System.out.println("共有" + rs.getRowCount() +"個結果!");
}
db.closeConn();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 測試DB有參的查詢
*/
public void testDB_executeQuery_Param(){
DB db = new DB();
db.setConnection(conn);
StringBuffer sql1 = new StringBuffer();
sql1.append("select * from QQUser where OnLine = ?");
System.out.println("sql1:" + sql1.toString());
db.setSqlValues(sql1.toString());
List values = new ArrayList();
values.add(new Integer(1));
db.setValues(values);
try {
Result rs = db.executeQuery();
if(rs == null || rs.getRowCount() == 0){
System.out.println("沒有結果");
}else{
System.out.println("共有" + rs.getRowCount() +"個結果!");
}
db.closeConn();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 測試DB無參的修改
*/
public void testDB_executeUpdate(){
DB db = new DB();
db.setConnection(conn);
String sql1 = "update QQUser set OnLine = 0 where ParentId = 1 ";
db.setSqlValues(sql1);
try {
int rs = db.executeUpdate();
System.out.println("共有資料" + rs +"修改!");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 測試DB有參的修改
*/
public void testDB_executeUpdate_param(){
DB db = new DB();
db.setConnection(conn);
String sql1 = "update QQUser set OnLine = 0 where ParentId = ? ";
System.out.println("sql1:" + sql1);
db.setSqlValues(sql1);
List values = new ArrayList();
values.add(new Integer(1));
db.setValues(values);
try {
int rs = db.executeUpdate();
System.out.println("共有資料" + rs +"修改!");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
相關文章
- c#封裝DBHelper類C#封裝
- Express呼叫mssql驅動公共類dbHelperExpressSQL
- SqlHelper和DBHelperSQL
- java反射呼叫set和get方法的通用類Java反射
- 七牛雲java(服務端)通用工具類Java服務端
- Excel通用類工具(二)Excel
- elasticsearch通用工具類Elasticsearch
- C# 生成RSS通用類C#
- 搭建一個Java專案可直接拿去使用的通用工具類Java
- openresty(nginx) redis 通用工具類RESTNginxRedis
- C#操作SQL Server通用類C#SQLServer
- 通用mapper和分類實現APP
- Mybatis騷操作-通用查詢工具類MyBatis
- Java版通用JS級聯JavaJS
- 進階剖析django通用類UpdateView(2張圖)DjangoView
- C#:資料庫SQL操作通用類C#資料庫SQL
- 一個.net下通用的Cookie操作類Cookie
- DataGrid控制元件通用列印類. (轉)控制元件
- java 遇到NoSuchMethodError通用解決思路JavaError
- 【Java基礎】通用程式設計Java程式設計
- java project打包生成jar包(通用)JavaProjectJAR
- asp.net 利用NPOI匯出Excel通用類ASP.NETExcel
- 通用的config檔案讀取類
- Java常用類-Object類JavaObject
- JAVA常用類--Cleaner類Java
- Json反序列化物件通用工具類JSON物件
- 關於一個樹狀結構的通用類
- 通用結果類用於返回響應結果
- 基於MessageDigest類編寫MD5通用工具類
- Java框架應具備的通用功能Java框架
- Java —— 列舉類(enum 類)Java
- Java —— 檔案類(File 類)Java
- Java —— 集合工具類(Collections 類)Java
- JAVA常用類--Runtime類Java
- Java超類與子類Java
- Java 抽象類Java抽象
- java 容器類Java
- Java 常用類Java