JDBC之代码重复使用

胖球嘎嘎

胖球嘎嘎

2016-02-19 20:17

今天图老师小编给大家介绍下JDBC之代码重复使用,平时喜欢JDBC之代码重复使用的朋友赶紧收藏起来吧!记得点赞哦~

  在使用JDBC连接数据库的时,我们会采用executeQuery(String sql)获得一个结果集。当数据库结构变化或者获得其他数据库表结果集的时候我们需要将ResultSet结果集根据不同的数据结构重新遍历。
  如何才能建立一个与数据库结构无关的JDBC连接呢?我们可以通过使用ResultSetMetaData()方法获得表结构。然后使用Object[]数组遍历结果集。当我们要取得相应的结果时,我们可以使用Iterator迭代器。只要遍历迭代器就可以取出结果。
  下面是我写的一个方法:
    1import java.math.BigDecimal;
    2import java.sql.Connection;
    3import java.sql.DriverManager;
    4import java.sql.ResultSet;
    5import java.sql.ResultSetMetaData;
    6import java.sql.SQLException;
    7import java.sql.Statement;
    8import java.util.ArrayList;
    9import java.util.Iterator;
   10import java.util.List;
   11
   12public 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}

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

  http://blog.csdn.net/xcl6996/archive/2007/06/22/1662633.aspx

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)
展开更多 50%)
分享

猜你喜欢

JDBC之代码重复使用

Web开发
JDBC之代码重复使用

假睫毛可以重复使用吗 重复使用假睫毛好吗

化妆
假睫毛可以重复使用吗 重复使用假睫毛好吗

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

假睫毛可以重复使用吗?

假睫毛 化妆 化妆技巧
假睫毛可以重复使用吗?

化妆棉可以重复使用吗

化妆棉 化妆工具 化妆品
化妆棉可以重复使用吗

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

压缩面膜可以重复使用吗

压缩面膜 面膜 护肤
压缩面膜可以重复使用吗

共享与重复使用PowerPoint内容

电脑入门
共享与重复使用PowerPoint内容

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

解决了打开Jsp文件的可恶问题

解决了打开Jsp文件的可恶问题

Linux系统中如何使用uniq命令删除文本重复行

Linux系统中如何使用uniq命令删除文本重复行
下拉加载更多内容 ↓