JDBC的工具類

jopen 9年前發布 | 1K 次閱讀 Java JDBC

    import java.io.BufferedReader;
import java.io.UnsupportedEncodingException;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
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.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;

public class DBSqlYY {  

    private static Connection con = null;  
    private static Statement st = null;  
    private static ResultSet rs = null;  
    /* 
     * 微軟的數據庫JDBC連接 
     */  

    private static String conURL = "jdbc:sqlserver://localhost:1433;databaseName=AWS";// 數據庫的地址連接  gajah 的數據庫連接  
    private static String cname = "com.microsoft.sqlserver.jdbc.SQLServerDriver";  
//  
    private static String dbA = "sa";  
    private static String dbpassword = "tiger";  
    public Connection open() {  
        Connection conn = null;  

        try {  
            Class.forName(cname);  
        } catch (Exception ex) {  
            ex.printStackTrace();  
        }  
        try {  
            conn = DriverManager.getConnection(conURL, dbA, dbpassword);  
        } catch (SQLException e) {  
            e.printStackTrace();  
        }  
        return conn;  
    }  

    /* 
     * 進行調用的數據庫連接 
     */  
    private static void dbconn() {  
        try {  
            Class.forName(cname);  
        } catch (ClassNotFoundException e1) {  
            e1.printStackTrace();  
        }  
        try {  
            con = DriverManager.getConnection(conURL, dbA, dbpassword);  
            st = con.createStatement();  
        } catch (SQLException e) {  
            // TODO 自動生成 catch 塊  
            e.printStackTrace();  
        }  
    }  

    /* 
     * 數據庫的連接關閉 
     */  
    private static void dbclose() {  
        try {  
            st.close();  
            con.close();  
        } catch (SQLException e) {  
            // TODO 自動生成 catch 塊  
            e.printStackTrace();  
        }  
        st = null;  
        con = null;  
    }  
    /* 
     * insert 語句執行快 
     */  
    public static int executeUpdater(String sql) {  
        int result = -99;  
        dbconn();  
        try {  
            result = st.executeUpdate(sql);  
        } catch (SQLException e) {  
            // TODO 自動生成 catch 塊  
            System.out.println("執行DBSqlYY類的public static List<List> GetLIst(String "+sql+")的方法出現錯誤");  
        } finally {  
            dbclose();  
        }  
        return result;  
    }  

    public static Hashtable executeQueryToH(String sql) {  
        Vector DBresult = executeQueryToV(sql);  
        if (DBresult != null && DBresult.size() > 0) {  
            return (Hashtable) DBresult.get(0);  
        }  
        return new Hashtable();  
    }  

    public ResultSet executeQuery(Connection conn, Statement stmt, String sql) {  
        ResultSet result = null;  
        try {  
            stmt = conn.createStatement();  
            result = stmt.executeQuery(sql);  
        } catch (SQLException e) {  
            e.printStackTrace();  
        }  
        return result;  
    }  
    public static Connection getConnecton(){  
        Connection conn = null;  
        try {  
            Class.forName(cname);  
            conn = DriverManager.getConnection(conURL, dbA, dbpassword);  
        } catch (ClassNotFoundException e) {  
            e.printStackTrace();  
        } catch (SQLException e) {  
            e.printStackTrace();  
        }  
            return conn;  
        }  
    /* 
     * 關閉conn ,rs ,st 三個方法的 
     */  
    public static void closeAll(Connection conn, ResultSet rs, Statement st){  
        try {  
            if ( conn != null ) {  
                conn.close();  
            }  

            if ( rs != null ) {  
                rs.close();  
            }  

            if ( st != null ) {  
                st.close();  
            }  
        } catch ( Exception e ) {  
            e.printStackTrace();  
        }  
    }  

    /* 
     * 關閉四個的conn ,rs ,st, pst 
     */  
    public static void closeAll(Connection conn, ResultSet rs, Statement st, PreparedStatement pst){  
        try {  
            if ( conn != null ) {  
                conn.close();  
            }  

            if ( rs != null ) {  
                rs.close();  
            }  

            if ( st != null ) {  
                st.close();  
            }  

            if ( pst != null) {  
                pst.close();  
            }  
        } catch ( Exception e ) {  
            e.printStackTrace();  
        }  
    }  



    public static int insertExecuste(String Sql){  
        Connection conn = DBSqlYY.getConnecton();  
        Statement st = null;  
        PreparedStatement pst = null;  
        ResultSet rs = null;  
        int charm=0;  
        try {  
            pst = conn.prepareStatement(Sql);  
            pst.executeUpdate();  
            charm=99;  
        } catch (SQLException e) {  
            System.out.println("執行數據庫失敗!執行的語句是:"+Sql);  
            charm=-99;  
        }  
        return charm;  
    }  

    public static String getString(String sql, String filed) {  
        Hashtable RESULT = executeQueryToH(sql);  
        return (String) RESULT.get(filed.toUpperCase());  
    }  

    public static String getToString(String sql,String filed) {  
    DBSqlYY U8DBSqlYY = new DBSqlYY();  
        Connection conn = U8DBSqlYY.open();  
        Statement stmt = null;  
        ResultSet rs = null;  
        int BINDID = 0;  
        try {  
            rs = U8DBSqlYY.executeQuery(conn, stmt, sql);  
            while(rs.next()) {  
                filed=rs.getString(filed);  
            }  
        } catch (Exception e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        return filed;  
    }  

    public static int getInt(String sql){  
        DBSqlYY U8DBSqlYY = new DBSqlYY();  
        Connection conn = U8DBSqlYY.open();  
        Statement stmt = null;  
        ResultSet rs = null;  
        int BINDID = 0;  
        try {  
            rs = U8DBSqlYY.executeQuery(conn, stmt, sql);  
            while(rs.next()) {  
                BINDID=Integer.parseInt(rs.getString("BINDID"));  
            }  
        } catch (Exception e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        return BINDID;  
    }  

    public static int getInt(String sql, String filed) {  
        Hashtable RESULT = executeQueryToH(sql);  
        return Integer.parseInt(RESULT.get(filed.toUpperCase()).toString());  
    }  

    public static Vector executeQueryToV(String sql) {  
        Vector DBresult = null;  
        ResultSet result = null;  
        DBSqlYY U8DBSqlYY = new DBSqlYY();  
        Connection conn = U8DBSqlYY.open();  
        Statement stmt = null;  
        ResultSet rs = null;  
        try {  
            rs = U8DBSqlYY.executeQuery(conn, stmt, sql);  
            DBresult = ResultSetToList(rs);  
        } catch (Exception e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } finally {  
            try {  
                conn.close();  
            } catch (SQLException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
        }  
        return DBresult;  
    }  

    private static Vector ResultSetToList(ResultSet rs) throws Exception {  
        ResultSetMetaData md = rs.getMetaData();  
        int columnCount = md.getColumnCount();  
        Vector list = new Vector();  
        Hashtable rowData;  
        while (rs.next()) {  
            rowData = new Hashtable(columnCount);  
            for (int i = 1; i <= columnCount; i++) {  
                Object v = rs.getObject(i);  
                rowData.put(md.getColumnName(i).toUpperCase(),  
                        rs.getString(i) == null ? "" : rs.getString(i));  
            }  
            list.add(rowData);  
        }  
        return list;  
    }  
    // 執行刪除  
    public static String executeDelete(String sql) {  
        try {  
            st = con.createStatement();  
            st.executeUpdate(sql);  
        } catch (Exception ex) {  
            ex.printStackTrace();  
        } finally {  
            dbclose();  
        }  
        return "執行成功";  
    }  

    public static List<String> QueryListForString(String sql) {  
        List<String> listTableName = new ArrayList<String>();  
        try {  
            dbconn();  
            ResultSet rs = st.executeQuery(sql);  
            while (rs.next()) {  
                listTableName.add(rs.getString(1));  
            }  
        } catch (SQLException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } finally {  
            dbclose();  
        }  
        return listTableName;  
    }  
    /* 

     * 直接傳表明可以得到表里面的數據 

     */  

    public static List<List> GetLIst(String sql,int ert){  
        Connection conn = getConnecton();  
        Statement st = null;  
        PreparedStatement prs=null;  
        ResultSet rs = null;  
        int it=0;  
        List totalList = new ArrayList();  
    try {  
        st = conn.createStatement();  
        rs = st.executeQuery(sql);  
        while(rs.next()){  
        List oneElementList = new ArrayList();  
         for(int i=1; i<=ert;i++){  
         oneElementList.add(rs.getString(i));  
         }  
         totalList.add(oneElementList);  
        }  
    }catch (Exception et){  
        System.out.println("執行DBSqlYY類的public static List<List> GetLIst(String "+sql+",String "+ert+")的方法出現錯誤");  
        System.out.println("出現的錯誤是:rs = st.executeQuery(sql);執行失敗/nSql語句是:"+sql+"???執行失敗!");  
        et.printStackTrace();  
    } finally {  
        closeAll(conn, rs, st);  
    }  
    return totalList;  
    }  
    public static Hashtable getHastable(String table,int BINDID){  
        Hashtable<String, String> add=new Hashtable();  
        String sql="select * from "+table+" where BINDID="+BINDID;  
        Vector b=DBSqlYY.executeQueryToV(sql);  
        for(int i=0;i<b.size();i++){  
            Hashtable tableS=(Hashtable) b.elementAt(0);  
            add=tableS;  
        }  
        return add;  
    }  
    public static Hashtable getHastable(String table,String BINDID){  
        Hashtable<String, String> add=new Hashtable();  
        String sql="select * from "+table+ " "+BINDID;  
        Vector b=DBSqlYY.executeQueryToV(sql);  
        for(int i=0;i<b.size();i++){  
            Hashtable tableS=(Hashtable) b.elementAt(0);  
            add=tableS;  
        }  
        return add;  
    }  

    public static Hashtable getHastable2(String table,int BINDID){  
        Hashtable<String, String> add=new Hashtable();  
        String sql="select * from "+table+" where BINDID="+BINDID;  
        //String sqltable="select Y_Name from Y_SystemTable  where Y_TABLE='"+BINDID+"'";  
        String sqltable="select name from syscolumns where id in (SELECT top 1 id FROM SysObjects Where XType='U'and name='"+table+"')";  
        List<List> tablelist=DBSqlYY.GetLIst(sqltable, 1);  
        System.out.println(tablelist.size());  
        List<List> list = DBSqlYY.GetLIst(sql, tablelist.size());  
        int i=0;  
        for(List a:list){  
            for(List b:tablelist){  
                    add.put((String) b.get(0), String.valueOf((String) a.get(i)));  
                i++;  
            }  
        }  
        return add;  
    }  
    //數據庫的更新通過HashTable來更新數據庫的表。  
    public static int SetHastable(String table,Hashtable gt,int ID){  
        Hashtable<String, String> add=new Hashtable();  
        List<List> list=DBSqlYY.GetLIst("select name,xtype from syscolumns where id in (SELECT top 1 id FROM SysObjects Where XType='U'and name='"+table+"')", 2);  
        String sql="select * from "+table+" where ID="+ID;  
        dbconn();  
        try {  
            st = con.createStatement();  
            st =con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
            ResultSet rs=st.executeQuery(sql);  
            while(rs.next()){  
                for(List l:list){  
                    for (Iterator it2 = gt.keySet().iterator(); it2.hasNext();) {  
                        String key = (String) it2.next();  
                        if(key.equals(String.valueOf((String) l.get(0)))){  
                            rs.updateObject(key, gt.get(key));  
                            // System.out.println(key+":"+(String)l.get(0));  
                        }  
                    }  
                }  
                rs.updateRow();  
            }  
            st.close();  
            rs.close();  
        } catch (SQLException e) {  
            e.printStackTrace();  
            return -99;  
        }  
        return 1;  
    }  
    //數據庫的更新根據條件進行update  
    public static int SetHastable(String table,Hashtable gt,String ID){  
        Hashtable<String, String> add=new Hashtable();  
        List<List> list=DBSqlYY.GetLIst("select name,xtype from syscolumns where id in (SELECT top 1 id FROM SysObjects Where XType='U'and name='"+table+"')", 2);  
        String sql="select * from "+table+" "+ID;  
        dbconn();  
        try {  
            st = con.createStatement();  
            st =con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
            ResultSet rs=st.executeQuery(sql);  
            while(rs.next()){  
                for(List l:list){  
                    for (Iterator it2 = gt.keySet().iterator(); it2.hasNext();) {  
                        String key = (String) it2.next();  

                        if(key.equals(String.valueOf((String) l.get(0)))){  
                            rs.updateObject(key, gt.get(key));  
                            // System.out.println(key+":"+(String)l.get(0));  
                        }  
                    }  
                }  
                rs.updateRow();  
            }  
            st.close();  
            rs.close();  
        } catch (SQLException e) {  
            e.printStackTrace();  
            return -99;  
        }  
        return 1;  
    }  
    public static int modifyPrices(String percentage) throws SQLException {  
        String dbName="YY_LSB_CUST";  
        Statement stmt = null;  
        dbconn();  
        try {  
            stmt = con.createStatement();  
            stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,  
                       ResultSet.CONCUR_UPDATABLE);  
            ResultSet uprs = stmt.executeQuery(  
                "SELECT * FROM " + dbName +" where CUSTID='Altech'" );  

            while (uprs.next()) {  
                uprs.updateObject("CUSTID", percentage);  
                uprs.updateRow();  
            }  

        } catch (SQLException e ) {  
            e.printStackTrace();  
        } finally {  
            if (stmt != null) { stmt.close(); }  
        }  
        return 1;  
    }  
    //根據表明。將hashtable里面的值insert到表里面去  
    public static int SetCreateHastable(String table,Hashtable gt){  
         StringBuffer sql=new StringBuffer();  
            StringBuffer sqlvalue=new StringBuffer();  
            List<List> list=DBSqlYY.GetLIst("select name,xtype from syscolumns where id in (SELECT top 1 id FROM SysObjects Where XType='U'and name='"+table+"')", 2);  
              int filedIndex = 0;  
              sql.append("insert into ").append(table).append("(");  
              sqlvalue.append("values(");  
              for(List a:list){             

                  for (Iterator it2 = gt.keySet().iterator(); it2.hasNext();) {  
                        String key = (String) it2.next();  
                        if(key.equals(String.valueOf((String) a.get(0)))){  
                            //System.out.println(key+":"+(String)a.get(0));  
                            sql.append((String) a.get(0)).append(",");  
                            sqlvalue.append(insertget(key, a.get(1), gt.get(key))).append(",");  
                        }  
                  }  
              }  
              sql.append("X@X-)");  
              sqlvalue.append("X@X-)");  
              sql.append(sqlvalue);  
              StringBuffer sql_= new StringBuffer();  
              sql_.append(sql.toString().replace(",X@X-", ""));  
              //System.out.println("SQL=["+sql_+"]");  
              int i=DBSqlYY.executeUpdater(sql_.toString());  
              if(i>0)  
              {  
                  return i;  
              }  
              else  
              {  
                  return -99;  
              }  
    }  

    //-------------------------------------------自動編輯代碼-------------------------  
    public static String updateget(String fieldName,Object fieldtype,Object fieldValue){  
        StringBuffer sql=new StringBuffer();  
        if("61".equals(String.valueOf(fieldtype))){  
             sql.append(" ").append(fieldName).append("=").append(fieldValue).append(" ");  
        }else if("108".equals(String.valueOf(fieldtype))){  
            sql.append(" ").append(fieldName).append("=").append(fieldValue).append(" ");  
        }else{  
             sql.append(" ").append(fieldName).append("='").append(fieldValue).append("' ");  
        }  
        return sql.toString();  
    }  
    public static String insertget(String fieldName,Object fieldtype,Object fieldValue){  
        StringBuffer sql=new StringBuffer();  
        if("61".equals(String.valueOf(fieldtype))){  
             sql.append(" '").append(fieldValue).append("' ");  
        }else if("108".equals(String.valueOf(fieldtype))){  
            sql.append(" ").append(fieldValue).append(" ");  
        }else if("108".equals(String.valueOf(fieldtype))){  
            sql.append(" ").append(fieldValue).append(" ");  
        }else{  
             sql.append(" '").append(fieldValue).append("' ");  
        }  
        return sql.toString();  
    }  

}  </pre> 


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!