1. 程式人生 > >JAVA操作資料庫的一個通用類

JAVA操作資料庫的一個通用類


import java.sql.Connection; 
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 java.util.logging.Level;
import java.util.logging.Logger;
import myapp.conf.ConnectDerbyX;
public class AppSql 
{
    //獲取連線
    private static final  Connection conn =ConnectDerbyX.connectDerbyX();
    //根據單句sql語句,構建PreparedStatement的物件.
    private static PreparedStatement getPreparedStatement(String sql) 
    { 
       PreparedStatement pst = null;
        try {                               
            pst = conn.prepareStatement(sql);   
           // System.out.println(getConnect());
        } catch (SQLException ex) {
            Logger.getLogger(AppSql.class.getName()).log(Level.SEVERE, null, ex);
        }
        return pst; 
    }  
    //設定sql語句引數
    private static void setParam(PreparedStatement pst, Object... param) 
    { 
        try {
            int length = param.length;
            for(int i = 0; i < length; i++)
            {
                pst.setObject(i + 1, param[i]);
            }
        } catch (SQLException ex) {
            Logger.getLogger(AppSql.class.getName()).log(Level.SEVERE, null, ex);
        }
    } 
    //無結果更新
    public static int executeUpdate(String sql, Object... param)
    {
        int rows = 0; 
        PreparedStatement pst = getPreparedStatement(sql); 
        setParam(pst, param); 
        try
        { 
            rows = pst.executeUpdate(); 
        } 
        catch(SQLException ex) { 
              Logger.getLogger(AppSql.class.getName()).log(Level.SEVERE, null, ex);
        } 
        finally
        { 
            closeDB(new Object[]{conn,pst}); 
        } 
        return rows; 
    } 
    //有結果
    public static List<Map<Object, Object>> executeQuery(String sql, Object... param) 
    { 
        List<Map<Object, Object>> lst = new ArrayList<Map<Object, Object>>();    
        ResultSet rs = null; 
        ResultSetMetaData rsd ; 
        PreparedStatement pst = getPreparedStatement(sql); 
        setParam(pst, param); 
        try
        {
            rs = pst.executeQuery(); 
            if(rs != null) 
            { 
                rsd = rs.getMetaData(); 
                while(rs.next()) 
                { 
                    int columnCount = rsd.getColumnCount();  
                    Map<Object, Object> map  = new HashMap<Object, Object>(); 
                    for(int i = 1; i < columnCount; i++) 
                    { 
                        map.put(rsd.getColumnName(i), rs.getObject(i));  
                    }  
                    lst.add(map); 
                } 
            }  
        } catch(SQLException ex) { 
              Logger.getLogger(AppSql.class.getName()).log(Level.SEVERE, null, ex);
        } finally{ 
            closeDB(new Object[]{conn,rs,pst}); 
        }  
        return lst;  
    }  
  
    public static void execteBatch(String sql[])
    {
        int count=sql.length;
        Statement pst=null;
        try {
            if(count>0)
            {
                pst=conn.createStatement();      
              for(int i=0;i<count;i++)
              {
                  pst.addBatch(sql[i]);
              }
               pst.executeBatch();
            }
        } catch (SQLException ex) {
            Logger.getLogger(AppSql.class.getName()).log(Level.SEVERE, null, ex);
        }
        finally{ 
            closeDB(new Object[]{conn,pst,"",""}); 
        }  
    }
    private static void closeDB(Object[] object) 
    {    
        int count=object.length;
        try {
            if(count==3)
            {
                ((Connection)object[0]).close();
                ((ResultSet)object[1]).close();
                ((PreparedStatement)object[2]).close();
            }
            else
            if(count==2)
            {    
                ((Connection)object[0]).close();
                ((PreparedStatement)object[1]).close();
            }
            else
            if(count==4)
            {
                ((Connection)object[0]).close();
                ((Statement)object[1]).close();
            }
            } 
            catch (SQLException ex) 
            {
                Logger.getLogger(AppSql.class.getName()).log(Level.SEVERE, null, ex);
            }
    }
} 

備註:其實算是修改後的,經常使用java操作資料庫,為考慮其通用性多次進行這個類的修改,這個算是程式碼量比較少的,雖然可讀性低些,有空在研究其實用性

相關推薦

JAVA操作資料庫一個通用

 import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; impo

java操作FTP伺服器通用工具

package cn.com.test.util; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStrea

Java通過反射建立JDBC操作資料庫通用方法

JAVA反射機制是在執行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個物件,都能夠呼叫它的任意方法和屬性;這種動態獲取資訊以及動態呼叫物件方法的功能稱為java語言的反射機制。 首先我們看個反射的小例子。 1.我們新建一個User的類。 2.通過反射獲取User物

推薦一個java操作ftp的工具

寫在前面 作為經常使用電腦整理檔案的童鞋,應該都使用過從ftp伺服器上傳下載檔案,那麼今天就瞭解下如何通過java程式操作ftp服務的檔案 首先你要知道ftp的ip,路徑,埠,有操作許可權的賬號和密碼 1 匯入jar包 commons-net-3.6.jar 這個jar包用來設定編碼,經過測試,不加也

JdbcTemplateUtil公共的使用-------java操作資料庫(2)

1.在xml配置JdbcTemplateUtil所需的資料來源 <!--2. 配置springDSN --> <bean id="springDSN" class="org.spri

Java操作Date的工具

import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar;

Java:構造一個Person,運用方法過載

public class Person{ String name; //字串 名字 int age; //int 年齡 private String secret="..."; //字串 祕密 int height

MongoDB使用Java操作資料庫案例

一、pom.xml依賴 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId>

JAVA操作資料庫一(Spring data jpa)

總的來說,JAVA操作資料庫還是相當方便的。 首先是核心配置檔案daoContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.o

java操作資料庫之模糊查詢

首先,在接口裡新增模糊查詢的方法,程式碼如下: ---------------------------------程式碼開始---------------------------------- package com.dao; import java.util.List; import

java操作資料庫 存在就更新不存在就插入的優化操作

  當我們用java,jdbc 或者 spring的jdbctemplate來操作資料時候,總有時候會碰到 存在就插入不存在就更新 這樣的需求,我們一般都是用下面的方法解決 public void save(){ JdbcTemplate jdbc = getJd

Java操作資料庫方式三Hibernate的使用之註解的使用

##概述在hibernate中,通常配置物件關係對映關係有兩種,一種是基於xml的方式,另一種是基於annotation的註解方式。在hibernate4及以後的版本直接使用註解,如果使用hiberna

Java操作資料庫之jdbc【原生方式】

引言:Java對資料庫的操作有很多種技術。例如說jdbc,dbutil +C3p0,hibernate,jdbcTemplate等等【這五個都會總結】,到後面的話使用一些高階的框架去操作資料庫,

Java 連線資料庫的工具

用jdbc連線mysql資料庫的工具類:做到連線資料庫,只需要修改配置檔案的資料庫名,自己資料庫的使用者名稱和密碼,其他不用修改,測試類已經寫好。需要的jar包:junit-4.7.jar 和jdbc的驅動包:自己在網上可以免費下載一:java程式碼package cn.lu

Java操作字串的工具

1 import java.io.ByteArrayOutputStream; 2 import java.io.IOException; 3 import java.io.PrintStream; 4 import java.math.BigDecimal; 5 import

Java操作資料庫注意點

1、addBatch批處理: smt.addBatch(sql1); smt.addBatch(sql2); smt.addBatch(sql3); smt.executeBatch(); 注意:使用批處理需要注意查詢、新增、修改不能使用同一個Statement,否則會報

java操作資料庫中的Clob型別

首先是POJO類: import java.sql.Clob;import java.util.Date; /*** * @author coffee**/ public class KybasicInfo implements java.io.Serializable {

Java操作集合的工具

一、介紹 提供了大量的方法對集合元素進行排序,查詢,修改等操作,還提供了將集合物件這職位不可變、對集合物件實現同步控制的方法 二、排序、查詢、替換 import java.util.ArrayLis

Java操作資料庫方式二DBCP使用詳解

##概述DBCP的全稱是:DataBase connection pool,翻譯是:資料庫連線池。在Java操作資料庫方式一JDBC使用詳解中說到直接使用JDBC非常消耗資源。為了避免頻繁關閉連結資料庫

Java操作資料庫,直接執行sql語句

TDDL也一樣,首先通過appName和group獲取到TGroupDataSource,然後通過TGroupDataSource.getConnection獲取TGroupConnection用這個connection去操作statment就可以了import java.i