JSP导出Oracle数据表的操作浅谈

JSP导出Oracle数据表是一个在开发应用时的常用的操作,那么如何实现呢?现在开始我们的程序介绍,首先下面的程序expddl.jsp可导出Oracle数据表进行数据库的用户下的所有数据表的DDL.

JSP导出的Oracle数据表之expddl.jsp:

 
 
 
  1. ﹤%@ page contentType="text/html; charset=gb2312" language="java" %﹥  
  2. ﹤%@ page import = "java.sql.*" %﹥  
  3. ﹤%@ page import = "oracle.jdbc.OracleDatabaseMetaData" %﹥  
  4. ﹤%@ page import = "oracle.jdbc.OracleResultSetMetaData" %﹥  
  5. ﹤%@ page import = "javax.sql.*,javax.naming.Context" %﹥  
  6. ﹤%@ page import = "javax.naming.InitialContext" %﹥  
  7. ﹤div align="center"﹥  
  8. ﹤%  
  9. DataSource ds = null;  
  10.  
  11. Context ic = new InitialContext();  
  12. ds = (DataSource) ic.lookup("java:comp/env/jdbc/mydb");  
  13.  
  14. Connection conn = ds.getConnection();  
  15.  
  16. OracleDatabaseMetaData dmd = (OracleDatabaseMetaData) conn.getMetaData();  
  17. String us = odmd.getUserName();  
  18. String[] types = new String[1];  
  19. types[0] = "TABLE";  
  20. ResultSet rs = odmd.getTables(null,us,"%",types);  
  21. while(rs.next()) {  
  22.  

对JSP导出的Oracle数据表进行取表名

 
 
 
  1. String tname = rs.getString(3);  
  2. %﹥  
  3. ﹤div align="center"﹥表名:﹤%= tname%﹥﹤/div﹥  
  4. ﹤table width="483" height="50" border="1" cellpadding="2" cellspacing="0"﹥  
  5. ﹤tr﹥  
  6. ﹤td﹥﹤div align="center"﹥序号﹤/div﹥﹤/td﹥  
  7. ﹤td﹥﹤div align="center"﹥标识﹤/div﹥﹤/td﹥  
  8. ﹤td﹥﹤div align="center"﹥类型/精度﹤/div﹥﹤/td﹥  
  9. ﹤td﹥﹤div align="center"﹥标识说明﹤/div﹥﹤/td﹥  
  10. ﹤/tr﹥  
  11. ﹤%  
  12. Statement st = conn.createStatement();  
  13. ResultSet rs1 = st.executeQuery("select * from " + tname);  
  14. OracleResultSetMetaData rmd = (OracleResultSetMetaData) rs1.getMetaData();  
  15.  

对JSP导出的Oracle数据表提取取列总数

 
 
 
  1. int colcnt = ormd.getColumnCount();  
  2.  

对JSP导出的Oracle数据表提取列序号

 
 
 
  1. int num = 1;  
  2. for(int j=0;j﹤colcnt;j++) {  
  3. String s = ormd.getColumnTypeName(j+1).toLowerCase();  
  4.  
  5. 对Oracle数据表只处理varchar2 char date number类型(根据需要添加相应的处理)  
  6.  
  7. if(s.equals("varchar2") || s.equals("char") || s.equals("date") || s.equals("number")) {  
  8. if(s.equals("varchar2") || s.equals("char"))  
  9. ss = s + "(" + ormd.getColumnDisplaySize(j+1) + ")";  
  10. if(s.equals("number"))  
  11. ss = s + "(" + ormd.getPrecision(j+1) + "," + ormd.getScale(j+1) + ")";  
  12. %﹥  
  13. ﹤tr﹥  
  14. ﹤td width="40"﹥﹤div align="center"﹥﹤%= num++ %﹥﹤/div﹥﹤/td﹥  
  15. ﹤td width="98"﹥﹤%=ormd.getColumnName(j+1)%﹥﹤/td﹥﹤td width="144"﹥﹤%= s %﹥﹤/td﹥  
  16. ﹤td width="173"﹥ ﹤/td﹥ ﹤/tr﹥  
  17. ﹤%  
  18. }  
  19. }  
  20. rs1.close();  
  21. st.close();  
  22. %﹥  
  23. ﹤/table﹥  
  24. ﹤br﹥  
  25. ﹤%  
  26. }  
  27. rs.close();  
  28. conn.close();  
  29. %﹥  
  30. ﹤/div﹥   
  31.  

通过上面对JSP导出的Oracle数据表的操作,你是否对于这个程序的实现有了自己的思路呢?

【编辑推荐】

  1. 对JSP中的内置对象简单概述
  2. 使用JSP include机制改进外观
  3. JSP编程应注意的六个常见问题
  4. JSP教程基础篇之JSP的技术特点
  5. 实现JSP论坛树型结构的具体算法
THE END