<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 27,  comments - 14,  trackbacks - 0
    在使用JDBC連接數據庫的時,我們會采用executeQuery(String sql)獲得一個結果集。當數據庫結構變化或者獲得其他數據庫表結果集的時候我們需要將ResultSet結果集根據不同的數據結構重新遍歷。
    如何才能建立一個與數據庫結構無關的JDBC連接呢?我們可以通過使用ResultSetMetaData()方法獲得表結構。然后使用Object[]數組遍歷結果集。當我們要取得相應的結果時,我們可以使用Iterator迭代器。只要遍歷迭代器就可以取出結果。
    下面是我寫的一個方法:
     1import java.math.BigDecimal;
      2
    import java.sql.Connection;
      3
    import java.sql.DriverManager;
      4
    import java.sql.ResultSet;
      5
    import java.sql.ResultSetMetaData;
      6
    import java.sql.SQLException;
      7
    import java.sql.Statement;
      8
    import java.util.ArrayList;
      9
    import java.util.Iterator;
     10
    import java.util.List;
     
    11
     12
    public class newJdbc {
     
    13    private String url = "jdbc:oracle:thin:@localhost:1521:nitpro";
     
    14
     
    15    private String dbUserName = "scott";
     
    16
     
    17    private String dbUserPassword = "tiger";
     
    18
     
    19    private Connection conn = null;
     
    20
     
    21    private Statement stmt = null;
     
    22
     
    23    private ResultSet rs = null;
     
    24
     
    25    public newJdbc() {
     
    26        try {
     
    27            Class.forName("oracle.jdbc.driver.OracleDriver");
     
    28        }
     catch (ClassNotFoundException e) {
     
    29            e.printStackTrace();
     
    30        }

     
    31    }

     
    32
     
    33    public Connection getConnection() {
     
    34        try {
     
    35            conn = DriverManager.getConnection(url, dbUserName, dbUserPassword);
     
    36        }
     catch (SQLException e) {
     
    37            e.printStackTrace();
     
    38        }

     
    39        return conn;
     
    40    }

     
    41
     
    42    public void close(ResultSet rs, Statement stmt, Connection conn) {
     
    43        if (rs != null{
     
    44            try {
     
    45                rs.close();
     
    46            }
     catch (SQLException e) {
     
    47                e.printStackTrace();
     
    48            }

     
    49        }

     
    50        if (stmt != null{
     
    51            try {
     
    52                stmt.close();
     
    53            }
     catch (SQLException e) {
     
    54                e.printStackTrace();
     
    55            }

     
    56        }

     
    57        if (conn != null{
     
    58            try {
     
    59                conn.close();
     
    60            }
     catch (SQLException e) {
     
    61                e.printStackTrace();
     
    62            }

     
    63        }

     
    64    }

     
    65
     
    66    public List query(String sql) {
     
    67        List list = new ArrayList();
     
    68
     
    69        conn = this.getConnection();
     
    70        try {
     
    71            stmt = conn.createStatement();
     
    72            rs = stmt.executeQuery(sql);
     
    73            //獲取數據庫表結構
     74            ResultSetMetaData rsm = rs.getMetaData();
     
    75            //取得數據庫的列數
     76            int col = rsm.getColumnCount();
     
    77            //生成col長度的Object數組
     78            Object[] obj = new Object[col];
     
    79            //遍歷結果集,將結果存入Object數組
     80            while (rs.next()) {
     
    81                for (int i = 0; i < col; i++{
     
    82                    obj[i] = rs.getObject(i + 1);
     
    83                }

     
    84                list.add(obj);
     
    85            }

     
    86        }
     catch (SQLException e) {
     
    87            e.printStackTrace();
     
    88        }
     finally {
     
    89            this.close(rs, stmt, conn);
     
    90        }

     
    91        return list;
     
    92    }

     
    93
     
    94    public void update(String sql) {
     
    95        try {
     
    96            conn = this.getConnection();
     
    97            stmt = conn.createStatement();
     
    98            stmt.executeUpdate(sql);
     
    99        }
     catch (SQLException e) {
    100            e.printStackTrace();
    101        }

    102    }

    103
    104    public static void main(String args[]) {
    105        newJdbc nj = new newJdbc();
    106        String sql = "select * from users";
    107        List list = nj.query(sql);
    108        //返回list的迭代器
    109        Iterator it = list.iterator();
    110        //遍歷迭代器,取出結果
    111        while (it.hasNext()) {
    112            Object[] o = (Object[]) it.next();
    113            int id = ((BigDecimal) o[0]).intValue();
    114            System.out.println(id);
    115        }

    116
    117    }

    118}

    119
    posted on 2007-07-12 16:30 Scott.Pan 閱讀(375) 評論(0)  編輯  收藏 所屬分類: 代碼收藏夾
    <2007年7月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 色播亚洲视频在线观看| 亚洲成年人免费网站| 任你躁在线精品免费| 亚洲国产精品第一区二区| 免费看h片的网站| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 国产国产人免费视频成69大陆 | 最新亚洲成av人免费看| 亚洲一欧洲中文字幕在线| 四虎影库久免费视频| 一级毛片aaaaaa免费看| 日本系列1页亚洲系列| 亚洲国产一区国产亚洲| 国产jizzjizz免费视频| 久久99国产乱子伦精品免费| 久久亚洲精品成人无码| 亚洲精品国产成人99久久| www.亚洲色图.com| 黄页网站免费观看| 本免费AV无码专区一区| 亚洲精品无码成人片久久不卡 | 亚洲AV无码成人精品区日韩| 亚洲AV无码一区东京热久久| 免费看又爽又黄禁片视频1000| 久久国产乱子伦精品免费不卡| 亚洲AV日韩AV永久无码色欲| 亚洲国产精品线在线观看| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 亚洲日本成本人观看| 亚洲AV午夜成人片| 亚洲第一福利网站在线观看| 美女视频黄是免费的网址| 国产午夜免费高清久久影院| 色偷偷亚洲男人天堂| 久久久久se色偷偷亚洲精品av | 亚洲乱亚洲乱妇无码| 久久久久亚洲AV无码网站| 亚洲无码黄色网址| 在线观看成人免费视频| 中文字幕免费高清视频| 三级黄色在线免费观看|