oracle 連接數據庫並查詢,返回List > 數據


package JDBC;

import java.sql.Clob;
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.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class OracleJdbcTest {
    //數據庫連接對象
    private static Connection conn = null;
     
    private static String driver = "oracle.jdbc.OracleDriver";//"oracle.jdbc.driver.OracleDriver"; //驅動
     
    private static String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; //連接字符串
     
    private static String username = "******"; //用戶名
     
    private static String password = "******"; //密碼
     
     
    // 獲得連接對象
    private static synchronized Connection getConn(){
        if(conn == null){
            try {
                Class.forName(driver);
                conn = DriverManager.getConnection(url, username, password);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return conn;
    }
     
    //執行查詢語句
    public void query(String sql, boolean isSelect) throws SQLException{
        PreparedStatement pstmt;
         
        try {
            pstmt = getConn().prepareStatement(sql);
            //建立一個結果集,用來保存查詢出來的結果
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                String name = rs.getString("bm_mc");
                System.out.println(name);
            }
            rs.close();
            pstmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    } 
    
    private static String clob2String(Clob clob) throws Exception {
        return (clob != null ? clob.getSubString(1, (int) clob.length()) : null);
    }
    
    private static List<Map<String, Object>> ResultSetToList(ResultSet rs) throws Exception {
        ResultSetMetaData md = rs.getMetaData();  // 得到結果集的結構信息,比如字段數、字段名等
        // .getMetaData().getTableName(1) 就可以返回表名 
        int columnCount = md.getColumnCount();  // 得到結果集的列數
        // System.out.println(columnCount);
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        Map<String, Object> rowData;
        while (rs.next()) { //記錄指針向下移動一個位置,如果其指向一條有效記錄,則返回真;否則返回假。只有使記錄指針不斷移動,才能不斷取出數據庫中的數據

            rowData = new HashMap<String, Object>(columnCount);
            for (int i = 1; i <= columnCount; i++) {
                Object v = rs.getObject(i); // 將任何數據類型返回為 Java Object
                if (v != null && (v.getClass() == Date.class || v.getClass() == java.sql.Date.class)) { // 反射
                    Timestamp ts = rs.getTimestamp(i);  // 返回時間和日期     java.sql.Timestamp
                    //rs.getDate()只是返回日期部分     java.sql.Date
                    //rs.getTime()只是返回時間部分     java.sql.Time
                    v = new java.util.Date(ts.getTime());
                    // v = ts;
                } else if (v != null && v.getClass() == Clob.class) {
                    v = clob2String((Clob) v); // oracle11g 遇到取出來的字段是clob類型,clob用來存儲大量文本數據
                }
                 //System.out.println("ResultSetToList:"+md.getColumnLabel(i));
                // rowData.put(camelName(md.getColumnLabel(i)), v==null?"":v);
                rowData.put(md.getColumnLabel(i).toLowerCase(), v == null ? "" : v);
                //getColumnName(int column):獲取指定列的名稱
                //getColumnLabel(int column):獲取用於打印輸出和顯示的指定列的建議標題。
                // toUpperCase 的意思是將所有的英文字符轉換為大寫字母
                // toLowerCase的意思是將所有的英文字符轉換為小寫字母 
            }
            list.add(rowData);
        }
        return list;
    }
    
  //執行查詢語句
    public List<Map<String, Object>> queryList(String sql, boolean isSelect) throws Exception{
        PreparedStatement pstmt = getConn().prepareStatement(sql);;
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
        //建立一個結果集,用來保存查詢出來的結果
        ResultSet rs = pstmt.executeQuery();
        list = ResultSetToList(rs);
        rs.close();
        pstmt.close();
        return list;  
    } 
     
    public void query(String sql) throws SQLException{
        PreparedStatement pstmt;
        pstmt = getConn().prepareStatement(sql);
        pstmt.execute();
        pstmt.close();
    }
     
     
    //關閉連接
    public void close(){
        try {
            getConn().close();
             
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
     
}

...

package JDBC;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

public class ConnOracle {
    public static void main(String[] args) throws Exception {
        OracleJdbcTest test = new OracleJdbcTest();
        try {
            test.query("drop table student");
        } catch (SQLException e) {}
         
        //test.query("create table student(id int, name nchar(20))");
         
        //test.query("insert into student values(1,'zhangsan')");
         
        //test.query("insert into student values(2,'lisi')");
         
        //test.query("select r.id from T_ry r", true);
        
        String sql = "select r.* from T_RY r where r.data_flag <> 'D' ";
        List<Map<String, Object>> list = test.queryList(sql, true);
        System.out.println(list);
        test.close();
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM