package com.cwbnig; 
import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; 
public class DatabaseConn { 
    public DatabaseConn()     {     } 
    public static synchronized Connection getConnection()throws Exception     {         Connection conn = null;         try         {          Context initCtx=new InitialContext();          Context envCtx=(Context)initCtx.lookup("java:comp/env");          DataSource ds=(DataSource)envCtx.lookup("jdbc/jspdev");          return ds.getConnection();         }         catch(SQLException e)         {             throw e;         }         catch(NamingException e)         {          throw e;         }     } }
  
  
package com.cwbnig; 
import java.sql.*; import java.util.Vector; 
public class OperateDB {  private Connection conn=null;  private Statement stmt=null;  PreparedStatement pstmt=null;  CallableStatement cstmt=null;  private ResultSet rs=null;  private ResultSetMetaData rsmd=null;  private String strsql="";    public OperateDB()  {   try   {    conn = DatabaseConn.getConnection();   }   catch (Exception e)   {    System.out.println("Error:com.cwbnig.OperateDB:Structure Method");   }  }    public Connection getConnection() throws SQLException  {   return this.conn;  }    public ResultSet executeQuery(String sql) throws SQLException  {   stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);   return stmt.executeQuery(sql);  }    public ResultSet listDataFromMSSQL(int curpage,int pagesize,String tablename,String sid,String con,String order) throws SQLException  {   int SELECTNUM=(curpage-1)*pagesize+1;   if(order.equalsIgnoreCase("asc"))   {    String min="SELECT MAX("+sid+") AS id FROM (SELECT TOP "+SELECTNUM+" "+sid+" FROM "+tablename+" ORDER BY "+sid+" ASC) tbl"; 
   strsql="SELECT TOP "+pagesize+" * FROM "+tablename+" WHERE "+sid+" >="+min+con+" ORDER BY "+sid+" ASC";   }   else   {    String max="SELECT MIN("+sid+") AS id FROM (SELECT TOP "+SELECTNUM+" "+sid+" FROM "+tablename+" ORDER BY "+sid+" DESC) tbl"; 
   strsql="SELECT TOP "+pagesize+" * FROM "+tablename+" WHERE "+sid+" <="+max+con+" ORDER BY "+sid+" DESC";   }   return this.executeQuery(strsql);  }    public ResultSet listDataFromMySQL(int curpage,int pagesize,String tablename,String sid,String con,String order) throws SQLException  {   int SELECTNUM=(curpage-1)*pagesize;   if(order.equalsIgnoreCase("asc"))   {    strsql="SELECT * FROM "+tablename+con+" ORDER BY "+sid+" ASC LIMIT "+SELECTNUM+","+pagesize;   }   else   {    strsql="SELECT * FROM "+tablename+con+" ORDER BY "+sid+" DESC LIMIT "+SELECTNUM+","+pagesize;   }   return this.executeQuery(strsql);  }    public ResultSet listDataFromOracle(int curpage,int pagesize,String tablename,String sid,String con,String order) throws SQLException  {   int SELECTNUM=(curpage-1)*pagesize+2;   if(order.equalsIgnoreCase("asc"))   {    String min="SELECT MAX("+sid+") AS SID FROM (SELECT "+sid+" FROM "+tablename+" WHERE ROWNUM <"+SELECTNUM+" ORDER BY "+sid+" ASC) TBL";    strsql="SELECT * FROM "+tablename+" WHERE "+sid+" >=("+min+") AND ROWNUM <"+(pagesize+1)+con+" ORDER BY "+sid+" ASC";   }   else   {    String max="SELECT MIN("+sid+") AS SID FROM (SELECT "+sid+" FROM "+tablename+" WHERE ROWNUM <"+SELECTNUM+" ORDER BY "+sid+" DESC) TBL";    strsql="(SELECT * FROM "+tablename+" WHERE "+sid+" <=("+max+") ORDER BY "+sid+" DESC)TBL2";    strsql="SELECT * FROM "+strsql+" WHERE ROWNUM<"+(pagesize+1)+con;   }   return this.executeQuery(strsql);  }    public Vector getDataFromMSSQL(int curpage,int pagesize,String tablename,String sid,String con,String order) throws Exception  {   Vector v=new Vector();   rs=this.listDataFromMSSQL(curpage,pagesize,tablename,sid,con,order);   rsmd=rs.getMetaData();   int colnum=rsmd.getColumnCount();   while(rs.next())   {    Object[] obj=new Object[colnum];    for(int i=0;i<colnum;i++)    {     obj[i]=new String(this.getCol(rs,rsmd.getColumnType(i+1),i+1));    }    v.add(obj);   }   stmt.close();   rs.close();   conn.close();   return v;  }    public Vector getDataFromMySQL(int curpage,int pagesize,String tablename,String sid,String con,String order) throws Exception  {   Vector v=new Vector();   rs=this.listDataFromMySQL(curpage,pagesize,tablename,sid,con,order);   rsmd=rs.getMetaData();   int colnum=rsmd.getColumnCount();   while(rs.next())   {    Object[] obj=new Object[colnum];    for(int i=0;i<colnum;i++)    {     obj[i]=new String(this.getCol(rs,rsmd.getColumnType(i+1),i+1));    }    v.add(obj);   }   stmt.close();   rs.close();   conn.close();   return v;  }    public Vector getDataFromOracle(int curpage,int pagesize,String tablename,String sid,String con,String order) throws Exception  {   Vector v=new Vector();   rs=this.listDataFromOracle(curpage,pagesize,tablename,sid,con,order);   rsmd=rs.getMetaData();   int colnum=rsmd.getColumnCount();   while(rs.next())   {    Object[] obj=new Object[colnum];    for(int i=0;i<colnum;i++)    {     obj[i]=new String(this.getCol(rs,rsmd.getColumnType(i+1),i+1));    }    v.add(obj);   }   stmt.close();   rs.close();   conn.close();   return v;  }         public String getCol(ResultSet rs,int type,int colNum)throws Exception  {   String ret="";        switch(type)        {           case(1):ret=rs.getString(colNum);break;           case(2):ret=rs.getString(colNum);break;           case(4):ret=String.valueOf(rs.getInt(colNum));break;           case(5):ret=String.valueOf(rs.getInt(colNum));break;           case(6):ret=String.valueOf(rs.getFloat(colNum));break;           case(8):ret=String.valueOf(rs.getDouble(colNum));break;           case(12):ret=rs.getString(colNum);break;           default:ret="not know";        }        return ret;   }      public Object[] getColName(String tablename)throws Exception  {   stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);      rs=stmt.executeQuery("SELECT * FROM "+tablename+" WHERE ROWNUM<2");      rsmd=rs.getMetaData()  ;      int colnum=rsmd.getColumnCount();      Object[] obj=new Object[colnum];      for(int i=0;i<colnum;i++)      {          obj[i]=rsmd.getColumnName(i+1);      }      return obj;   }    public int getRowCount(String tablename) throws SQLException  {   stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);   strsql="SELECT COUNT(*) AS COUNT FROM "+tablename;   rs=stmt.executeQuery(strsql);   if(rs.next())   {    return rs.getInt(1);   }   else   {    return 0;   }  }     public int getRowCount(ResultSet rs) throws SQLException  {   int rowCount = 0;   rs.last();   rowCount = rs.getRow();   rs.beforeFirst();   return rowCount;  }     public int executeUpdate(String sql) throws SQLException  {   stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 
  return stmt.executeUpdate(sql);  }    public int[] executeUpdateBatch(String[] sqls) throws SQLException  {   conn.setAutoCommit(false);   stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);   try   {    for (int i = 0; i < sqls.length; i++)    {     stmt.addBatch(sqls[i]);    }    int[] updateCounts=stmt.executeBatch();    conn.commit();    conn.setAutoCommit(true);    return updateCounts;   }   catch (SQLException e)   {    conn.rollback();    throw e;   }  }    public PreparedStatement prepareStatement(String sql) throws SQLException  {   pstmt = conn.prepareStatement(sql);   return  pstmt;  }    public CallableStatement callableStatement(String sql) throws SQLException  {   cstmt = conn.prepareCall(sql);   return  cstmt;  } 
 public void setAutoCommit(boolean s) throws SQLException  {   conn.setAutoCommit(s);  } 
 public void commit() throws SQLException  {   conn.commit();  } 
 public void rollback() throws SQLException  {   conn.rollback();  }    public void close() throws SQLException  {   if (stmt != null)   {    stmt.close();    stmt = null;   }   if (conn != null)   {    conn.close();    conn = null;   }  } } 
  
<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="errorinfo.jsp"%> <html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>testOracle</title> </head> <body> <jsp:useBean id="operatedb" scope="page" class="com.cwbnig.OperateDB"/> <%  Object[] obj=null;  obj=operatedb.getColName("TBL_STRUCTS");  for(int temp=0;temp<obj.length;temp++)  {   out.println(obj[temp]);  }    out.println("<br>");    java.util.Vector v=operatedb.getDataFromOracle(1,10,"TBL_STRUCTS","SID","","desc");  java.util.Enumeration e=v.elements();  while(e.hasMoreElements())  {   obj=(Object[])e.nextElement();   for(int i=0;i<obj.length;i++)   {    out.println(obj[i]);   }   out.print("<br>");  } %> </table> <br> <a href="testOracle.do?forward=bdgk">testOracle.do?forward=bdgk</a>  </body> </html>  
 
  |