BaseQueryCommand.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:2k
源码类别:

Java编程

开发平台:

Java

  1. package examples.datacommands;
  2. import javax.sql.*;
  3. import javax.naming.InitialContext;
  4. import javax.naming.NamingException;
  5. import java.sql.*;
  6. import sun.jdbc.rowset.CachedRowSet;
  7. /**
  8.  * The Super class for any data command beans Read from the
  9.  * database.
  10.  */
  11. abstract class BaseReadCommand {
  12. protected PreparedStatement pstmt;
  13. protected CachedRowSet rowSet = null;
  14. private Connection con;
  15. protected BaseReadCommand ( String jndiName, String statement ) throws DataCommandException
  16. {
  17.         InitialContext ctx = null;
  18.         try
  19.         {
  20.             ctx = new InitialContext();
  21.             DataSource ds = (javax.sql.DataSource) ctx.lookup(jndiName);
  22.             con = ds.getConnection();
  23.             pstmt = con.prepareStatement(statement);
  24.         }
  25.         catch (NamingException e)
  26.         {
  27.             throw new DataCommandException(e.getMessage());
  28.         }
  29.         catch (SQLException e)
  30.         {
  31.             throw new DataCommandException(e.getMessage());
  32.         }
  33. }
  34. public void execute() throws DataCommandException
  35. {
  36.         try
  37.         {
  38.             rowSet = new CachedRowSet();
  39.             rowSet.populate(pstmt.executeQuery());
  40.             rowSet.beforeFirst();
  41.             this.release();
  42.         } catch (SQLException e)
  43.         {
  44.             throw new DataCommandException(e.getMessage());
  45.         }
  46.     }
  47. public boolean next() throws DataCommandException
  48. {
  49.         try
  50.         {
  51.             return rowSet.next();
  52.         } catch (SQLException e)
  53.         {
  54.             throw new DataCommandException(e.getMessage());
  55.         }
  56. }
  57. private void release() throws SQLException
  58. {
  59.         if (pstmt != null) pstmt.close();
  60.         if (con != null) con.close();
  61.   }
  62. }