1. 程式人生 > >JDBC工具類

JDBC工具類

/**
 * 2017年6月26日下午3:37:05
 */
package com.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 *
 * @author huangtao
 * 2017年6月26日下午3:37:05
 * bkm
 * @parameter
 * TODO
 * JDBC連線資料庫
 * 連線遠端資料庫,取出資料,放入csv檔案
 */
public class JDBCUtil {
private static Log log = LogFactory.getLog(JDBCUtil.class);
private RespsonData rd = new RespsonData("success");// 通用返回JSON物件
 
//驅動類完整路徑
private static final String DRIVERPATH = ResourceUtil.getConf("NewDriver");
//連線URL
private static final String URL = ResourceUtil.getConf("NewUrl");
//使用者名稱
private static final String USERNAME = ResourceUtil.getConf("NewUsername");
//密碼
private static final String PASSWORD = ResourceUtil.getConf("NewPassword");
static {
try {
Class.forName(DRIVERPATH);
} catch (ClassNotFoundException e) {
e.printStackTrace();
log.info("JDBC DataBase Load Driver Error!");
System.out.println("載入驅動錯誤!");
}
}
/**
* 獲取連線
* @author huangtao
*
* @return
* 2016-9-5
*/
public static Connection getConnection() {
Connection conn = null;
try {conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
log.info("JDBC DataBase Can Not Connect!");
System.out.println("資料庫連線不上!");
}
return conn;
}
/**
* 執行DML語句,insert into、update、delete
* @author huangtao
*
* @param sql
* @param params
* @return
* 2016-9-5
*/
public static int executeUpdate(String sql, Object[] params) {
Connection conn = getConnection();
PreparedStatement ps = null;
int row = 0;
try {
ps = conn.prepareStatement(sql);
if(params != null) {
for(int i=0; i<params.length; i++) {
ps.setObject(i + 1, params[i]);
}
}
row = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
log.error("executeUpdate error...",e);
} finally {
close(conn, ps, null);
}
return row;
} 
/**
* 執行DQL語句,返回List資料
* @author huangtao
*
* @param sql
* @param params
* @return
* 2016-9-5
*/
public static List<Object[]> executeQuery(String sql, Object[] params) {
List<Object[]> list = new ArrayList<Object[]>();
Connection conn = getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(sql);
if(params != null) {
for(int i=0; i<params.length; i++) {
ps.setObject(i + 1, params[i]);
}
}
//執行sql語句,獲取結果集
rs = ps.executeQuery();
//獲取結果集的列數
int col = rs.getMetaData().getColumnCount();
//遍歷結果集
while(rs.next()) {
Object[] obj = new Object[col];
for(int i=0; i<col; i++) {
obj[i] = rs.getObject(i + 1);
}
list.add(obj);
}
} catch (SQLException e) {
e.printStackTrace();
log.error("executeQuery error...",e);
} finally {
close(conn, ps, rs);
}
return list;
}
public static List<Map<String, Object>> executeQueryForMap(String sql, Object[] params) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Connection conn = getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(sql);
if(params != null) {
for(int i=0; i<params.length; i++) {
ps.setObject(i + 1, params[i]);
}
}
//執行sql語句,獲取結果集
rs = ps.executeQuery();
//獲取結果集屬性資訊
ResultSetMetaData md = rs.getMetaData();
//獲取結果集的列數
int col = md.getColumnCount();
//遍歷結果集
while(rs.next()) {
Map<String, Object> dataMap = new HashMap<String, Object>();
for(int i=1; i<=col; i++) {
//獲取指定位置的欄位名稱
String key = md.getColumnName(i);
//獲取指定位置的欄位值
Object value = rs.getObject(i);
dataMap.put(key, value);
list.add(dataMap);
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(conn, ps, rs);
}
return list;
}
/**
* 關閉
* @author huangtao
*
* @param conn
* @param sta
* @param rs
* 2016-9-5
*/
private static void close(Connection conn, Statement sta, ResultSet rs) {
try {
if(rs != null) {
rs.close();
}
if(sta != null) {
sta.close();
}
if(conn != null) {
conn.close();
}
} catch(SQLException e) {
e.printStackTrace();
log.error("JDBCUtil1 Release Of Resource Error!",e);
System.out.println("釋放資源出錯!");
}
}
//查詢總數
public static int executeCount(String sql, Object[] params) {
Connection conn = getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
int count = 0;
try {ps = conn.prepareStatement(sql);
if(params != null) {
for(int i=0; i<params.length; i++) {
ps.setObject(i+1, params[i]);//欄位的索引位置從1開始,所以要加1
}
}
//執行sql語句,獲取結果集
rs = ps.executeQuery();
//遍歷結果集
while(rs.next()) {
count = Integer.parseInt(rs.getObject(1).toString());
}} catch (SQLException e) {
e.printStackTrace();
log.error("executeCount error...",e);
} finally {
close(conn, ps, rs);
}
return count;
}




}

相關推薦

jdbc工具封裝

ram ive while lock ins connect cat stack sys 封裝 package util; import java.sql.Connection; import java.sql.DriverManager; import

JDBC工具相關

lex ati tac dstat ram stmt 提取 ini .get 第一種(單純提取註冊驅動和獲取連接): 把註冊驅動,獲取連接一起寫入工具類靜態方法裏,並釋放資源 1 import java.sql.Connection; 2 import java.sq

抽取JDBC工具並增刪改查

for 文件 import -c auto -a san pac ext 抽取工具類: package demo; /* * 工具類 */ import java.sql.Connection; import java.sql.DriverManager; imp

JDBC【事務、元數據、改造JDBC工具

true 出了 簡單 static comm 使用 當前 eat 得到 1.事務 一個SESSION所進行的所有更新操作要麽一起成功,要麽一起失敗 舉個例子:A向B轉賬,轉賬這個流程中如果出現問題,事務可以讓數據恢復成原來一樣【A賬戶的錢沒變,B賬戶的錢也沒變】。 事例

jdbc 工具 封裝數據庫連接

on() mage stream res jdb com statement stack pos 首先,創建一個文件db.properties,用於保存數據庫連接信息。 編寫代碼連接數據庫 package com.jdbc; import java.io.IO

把註冊驅動放到JDBC工具

改動的地方: JDBCTest: JDBCUtil: JDBCTest: package com.test.example; import java.sql.Connection; import java.sql.DriverManager; import java.

JDBC工具 使用Durid連線池

public class JDBCUtils { private static DataSource ds ; static { try {

Hive----JDBC工具的建立使用(包括HIVEsql工具)---IDEA開發

  Hive-----JDBC---util package com.www.hive.util;import java.sql.*;import java.util.Date;import java.util.*;import java.util.Lis

jdbc工具BDutil.java

package util; import java.sql.*; public final class DButil { private static final String driver = "com.mysql.jdbc.Driver"; private sta

JDBC工具連線資料庫測試

測試程式碼 import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import com.jdbcutils.JDBCUtils; public class J

一個大牛寫的JDBC工具

事情過去好久了...大概三年前 記著那個時候,此大牛(IBM某架構),在UE下一氣呵成,沒有任何多餘程式碼,甚至不用註釋都可以看得明白此段程式碼用途,現在仔細看了,雖然很基本,但是仍舊覺著此段程式碼很爽!貼出來,讓大家有時間的話,都大致看一下... package com.

JDBC工具DataSourceUtils,dao介面程式碼示例;

DataSourceUtils工具類連線池用的是Druid: import com.igeek.common.utils.DataSourceUtils; import java.sql.Connection; import java.sql.ResultSet; imp

JDBC工具及增刪改查

資料庫: CREATE DATABASE mydb; #使用資料庫 USE mydb; ###建立分類表 CREATE TABLE category( cid INT PRIMARY KEY AUTO_INCREMENT , cname VA

JDBC 工具封裝jdbcUtils

public class JdbcUtil {     private static Connection connection = null;     private static PreparedStatement ps = null;     private static ResultSet rs =

MySQL資料庫學習筆記(十一)----DAO設計模式實現資料庫的增刪改查(進一步封裝JDBC工具

系列文章並非本人原創。 在這裡我想討論的一個問題是:在PersonDaoImpl這個實現類中,我們可以看到 public void add(Person p) throws SQLException { 26 Connection conn

簡單的JDBC工具

package com.itheima.utils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement

JDBC工具

/**  * 2017年6月26日下午3:37:05  */ package com.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStat

JDBC工具JDBC工具,封裝方法(公共的、靜態的)進行與資料庫的連線及執行sql命令,在需要使用的中直接呼叫。)

JDBC工具類,封裝方法(公共的、靜態的)進行與資料庫的連線及執行sql命令,在需要使用的類中直接呼叫。 package com.offcn.util; import java.io.IOException; import java.io.InputStrea

複習:JDBC工具並實現增刪改查

JDBC工具類 package bull01.JDBCbasis; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOExceptio

連線資料庫Jdbc工具

由於經常會連線資料庫,因此編寫了一個工具類,用到時只需要匯入即可使用。 package com.guigu.util; import java.sql.Connection; import java