JDBC之代码重复使用

2016-02-19 20:17 8 1 收藏

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

【 tulaoshi.com - Web开发 】

  在使用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://www.tulaoshi.com/webkaifa/)

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

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

来源:http://www.tulaoshi.com/n/20160219/1623254.html

延伸阅读
假睫毛可以重复使用吗 1 假睫毛可以重复使用。 假睫毛只要在使用一次之后没有出现破损、变形等情况,是可以重复使用的。当然在重复使用之前,应该清洗干净假睫毛以免对眼睛造成刺激。 什么样的假睫毛更能重复使用 2 不少人有个错误的观点就是认为越贵的假睫毛越能重复使用。其实不然,只有材质比较硬,不容易脱落变形的假睫毛重复使用次...
美瞳日抛可以戴多久 日抛每天佩戴都不要超过10小时,日抛说白了就是一次性的美瞳,不能在摘取后再反复戴上,因为美瞳一但配戴超过其预设的佩戴时间,镜片可能产生微小的破损,导致较多的蛋白质和细菌沉淀而引起眼睛的不适。小编建议各位宝宝们,不要为了省钱或者偷懒,把日抛美瞳重复使用,毕竟眼睛是很脆弱的,请好好呵护它。 美瞳日...
标签: Web开发
代码如下: import java.sql.Date; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSetMetaData; import java.sql.Statement; import java.sql.ResultSet; import java.sql.DriverManager; import java.sql.SQLException; public class FirstOracleJdbc { public static void main(String[]...
标签: Web开发
我的解决办法如下(只针对客户端): 用户点击提交按钮后给按钮添加disabled属性 代码如下: $("input:submit").each(function() { var srcclick = $(this).attr("onclick"); if(typeof(srcclick)=="function"){ $(this).click(function() { if (srcclick()) { setdisabled(this); return true; } return false; });} }); functi...
标签: Web开发
script language="javascript" function getNoRepeat() { return arguments[0].join('‖').match(/([^‖]+)(?!.*‖1)/ig); } var tmpArr = [1, 'a', 'ab', 'abc', 'd', 1.2, 'a+b', 'd', 'e', 5, 'a', 1, 'h', 'c', 'ab']; var ret...

经验教程

539

收藏

49
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部