注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

陈钟鸣的博客

独立之精神,自由之思想.

 
 
 

日志

 
 

给新入职的同事写的一个JDBC的例子  

2008-07-22 09:06:59|  分类: java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;


public class JDBCDemo {
    
    private static final String ORACLE_JDBC_DRIVER_ORACLE_DRIVER = "oracle.jdbc.driver.OracleDriver";
    private static final String TAB = "\t";
    private static final String DNAME = "DNAME";
    private static final String DEPTNO = "DEPTNO";
    private static final String EMPNO = "EMPNO";
    /**
     *
     * @param args
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        String url="jdbc:oracle:thin:@XX.XX.XXX.XXX:1521:XXX";
        Connection conn = getConnect(url,"scott","tiger");

        Map pkMap = new HashMap();
        pkMap.put(DEPTNO, null);

        List user_info = select(conn,"select * from emp");
        Hashtable ht = select(conn,"select * from dept",pkMap);
        for(int i=0;i<user_info.size();i++){
            Map map = (Map)user_info.get(i);
            Map pk  = new HashMap();
            pk.put(DEPTNO, map.get(DEPTNO));
            if(ht.containsKey(pk)){
                Map deptMap = (Map)ht.get(pk);
                map.put(DNAME, deptMap.get(DNAME));
            }
        }
        
        for(int i = 0;i<user_info.size();i++){
            Map userMap = (Map)user_info.get(i);
            System.out.println(userMap.get(EMPNO)+TAB+userMap.get(DEPTNO)+TAB+userMap.get(DNAME));
        }
    }
    
    /**
     * create a connect to oracle DB
     * @param url
     * @param user
     * @param pwd
     * @return
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public static Connection getConnect(String url,String user,String pwd) throws ClassNotFoundException, SQLException{
        Class.forName(ORACLE_JDBC_DRIVER_ORACLE_DRIVER);
        Connection c = DriverManager.getConnection(url,user,pwd);
        return c;
    }
    
    
    /**
     * select data from DB
     * @param conn  DB connection
     * @param sql select SQL statement
     * @return List
     * @throws SQLException
     */
    public static List select(Connection conn,String sql) throws SQLException{
        List result = null;
        java.sql.Statement stmt = conn.createStatement();
        java.sql.ResultSet rs =  stmt.executeQuery(sql);
        result = extractResult(rs);
        return result;
    }
    
    /**
     * extract result to a list
     * @param rs resultset
     * @return list
     * @throws SQLException
     */
    private static List extractResult(java.sql.ResultSet rs) throws SQLException{
        /**/
        List result = new ArrayList();
        /**/
        java.sql.ResultSetMetaData rsmd =  rs.getMetaData();
        /**/
        String[] fields = new String[rsmd.getColumnCount()];
        /**/
        for(int i = 0;i<rsmd.getColumnCount();i++){
            fields[i] = rsmd.getColumnLabel(i+1).toUpperCase();
        }
        
        while(rs.next()){
            Map map = new HashMap();
            for(int i = 0;i<rsmd.getColumnCount();i++){
                map.put(fields[i].toUpperCase(), rs.getObject(fields[i]));
            }
            result.add(map);
        }
        return result;
    }
    
    /**
     * select from db and return a hashtable
     * @param conn DB connection
     * @param sql select SQL
     * @param pkMap primary key map
     * @return hashtable
     * @throws SQLException
     */
    public static Hashtable select(Connection conn,String sql,Map pkMap) throws SQLException{
        Hashtable ht = null;
        java.sql.Statement stmt = conn.createStatement();
        java.sql.ResultSet rs =  stmt.executeQuery(sql);
        ht = extractToHashTable(rs,pkMap);
        return ht;
    }
    
    /**
     * extract a resultset to hashtable
     * @param rs result set
     * @param pkMap primary key map
     * @return Hashtable
     * @throws SQLException
     */
    private static Hashtable extractToHashTable(ResultSet rs,Map pkMap) throws SQLException{
        Hashtable result = new Hashtable();
        
        
        java.sql.ResultSetMetaData rsmd =  rs.getMetaData();
        String[] fields = new String[rsmd.getColumnCount()];
        
        for(int i = 0;i<rsmd.getColumnCount();i++){
            fields[i] = rsmd.getColumnLabel(i+1).toUpperCase();
        }
        
        while(rs.next()){
            Map map = new HashMap();
            Map pk = new HashMap();
            for(int i = 0;i<rsmd.getColumnCount();i++){
                map.put(fields[i].toUpperCase(), rs.getObject(fields[i]));
                if(pkMap.containsKey(fields[i])){
                    pk.put(fields[i].toUpperCase(), rs.getObject(fields[i]));
                }
            }
            result.put(pk,map);
        }
        return result;
    }
}

  评论这张
 
阅读(73)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017