Chinaunix

标题: 简单的JDBC助手类 [打印本页]

作者: gongfuxuan    时间: 2004-11-22 17:21
标题: 简单的JDBC助手类

  1. import java.sql.*;

  2. public class Helper {
  3.   private Helper() {
  4.   }

  5.   public static Connection getConnection() {
  6.     try {
  7.       Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
  8.       String url = "";
  9.       Connection con = DriverManager.getConnection(url, "gongfuxuan",
  10.           "password");
  11.       return con;
  12.     }
  13.     catch (Exception e) {
  14.       e.printStackTrace();
  15.       throw new RuntimeException("Error while get database Connection");
  16.     }
  17.   }

  18.   public static ResultSet query(String sql) {
  19.     Connection con = getConnection();
  20.     ResultSet rs = null;
  21.     try {
  22.       Statement st = con.createStatement();
  23.       rs = st.executeQuery(sql);
  24.       if (st != null) {
  25.         st.close();
  26.       }
  27.       if (con != null) {
  28.         con.close();
  29.       }
  30.     }
  31.     catch (SQLException e) {
  32.       System.out.println("SQL Error,code: " + e.getErrorCode() + ", state:" +
  33.                          e.getSQLState() + "when execute sql:" + sql);
  34.     }

  35.     return rs;
  36.   }

  37.   public static boolean execute(String sql) {
  38.     Connection con = getConnection();
  39.     boolean result = false;
  40.     try {
  41.       Statement st = con.createStatement();
  42.       result = st.execute(sql);
  43.       if (st != null) {
  44.         st.close();
  45.       }
  46.       if (con != null) {
  47.         con.close();

  48.       }
  49.     }
  50.     catch (SQLException e) {
  51.       System.out.println("SQL Error,code: " + e.getErrorCode() + ", state:" +
  52.                          e.getSQLState() + "when execute sql:" + sql);
  53.     }
  54.     return result;
  55.   }

  56.   public static long Update(String sql) {
  57.     Connection con = getConnection();
  58.     long result = -1L;
  59.     try {
  60.       Statement st = con.createStatement();
  61.       result = st.executeUpdate(sql);
  62.       if (st != null) {
  63.         st.close();
  64.       }
  65.       if (con != null) {
  66.         con.close();
  67.       }
  68.     }
  69.     catch (SQLException e) {
  70.       System.out.println("SQL Error,code: " + e.getErrorCode() + ", state:" +
  71.                          e.getSQLState() + "when execute sql:" + sql);
  72.     }
  73.     return result;
  74.   }

  75. }
复制代码

作者: 逸远    时间: 2004-11-22 17:39
标题: 简单的JDBC助手类
呵呵~~,其实可以使用工厂模式,以后就什么数据库都可以通用了
作者: elgs    时间: 2004-11-22 21:38
标题: 简单的JDBC助手类
有两个问题, 1, 不用连接池, 没什么实用价值, 2, 是又第一个问题导致的, 返回ResultSet必须保持住连接, 直到ResultSet用完才能关闭, 封装得不好。
不过这样设计的想法是很不错的。
如果把ResultSet里的数据导到一个其它的数据结构里,就像CachedRowSet一样, 如何
作者: jhsea3do    时间: 2004-11-22 22:02
标题: 简单的JDBC助手类
我记得好像说JIVE在这方面处理得比较好!
作者: gongfuxuan    时间: 2004-11-23 10:15
标题: 简单的JDBC助手类
谢谢elgs 指点,对,实际用是肯定要用连接池才行,把
getConnection()函数重写。你指出的第二点,让我很佩服,谢谢,我将修改一下。
作者: moonight    时间: 2004-11-24 10:06
标题: 简单的JDBC助手类
这种写法我们原来也试过,但是在查询大结果集的时候和有事务处理的时候问题比较多。所以只能不封装了。

要是能有通用的解决方法就好了。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2