zoukankan      html  css  js  c++  java
  • [Java] Java 获取数据库所有表基本信息和表中的所有列基本信息代码

    废话不多说、上代码

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class AnalysisDatabaseStructureServlet extends HttpServlet {
    
        private static final long serialVersionUID = 1L;
        Connection conn = null;
        Statement st = null;
    
        public AnalysisDatabaseStructureServlet() {
            super();
        }
    
        //获取conn
        public void init() throws ServletException {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/base", "root", "root");
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            // 1、获取数据库所有表
            StringBuffer sbTables = new StringBuffer();
            List<String> tables = new ArrayList<String>();
            sbTables.append("-------------- 数据库中有下列的表 ----------<br/>");
            try {
                DatabaseMetaData dbMetaData = conn.getMetaData();
                ResultSet rs = dbMetaData.getTables(null, null, null,new String[] { "TABLE" });
                while (rs.next()) {// ///TABLE_TYPE/REMARKS
                    sbTables.append("表名:" + rs.getString("TABLE_NAME") + "<br/>");
                    sbTables.append("表类型:" + rs.getString("TABLE_TYPE") + "<br/>");
                    sbTables.append("表所属数据库:" + rs.getString("TABLE_CAT") + "<br/>");
                    sbTables.append("表所属用户名:" + rs.getString("TABLE_SCHEM")+ "<br/>");
                    sbTables.append("表备注:" + rs.getString("REMARKS") + "<br/>");
                    sbTables.append("------------------------------<br/>");
                    tables.add(rs.getString("TABLE_NAME"));
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
    
            // 2、遍历数据库表,获取各表的字段等信息
            StringBuffer sbCloumns = new StringBuffer();
            for (String tableName : tables) {
                String sql = "select * from " + tableName;
                try {
                    PreparedStatement ps = conn.prepareStatement(sql);
                    ResultSet rs = ps.executeQuery();
                    ResultSetMetaData meta = rs.getMetaData();
                    int columeCount = meta.getColumnCount();
                    sbCloumns.append("表 "+ tableName + "共有 "+columeCount+" 个字段。字段信息如下:<br/>");
                    for (int i = 1; i < columeCount + 1; i++) {
                        sbCloumns.append("字段名:"+meta.getColumnName(i)+"<br/>");
                        sbCloumns.append("类型:"+meta.getColumnType(i)+"<br/>");
                        sbCloumns.append("------------------------------<br/>");
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                sbCloumns.append("------------------------------<br/>");
            }
    
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.println("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">");
            out.println("<HTML>");
            out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
            out.println("  <BODY>");
            out.println("" + sbTables.toString());
            out.println("" + sbCloumns.toString());
            out.println("  </BODY>");
            out.println("</HTML>");
            out.flush();
            out.close();
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            this.doGet(request, response);
        }
        
        //释放conn
        public void destroy() {
            super.destroy();
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
  • 相关阅读:
    访问者模式
    oracle触发器简单实用示例
    C#控件交互效果类(也可以用作缩小面板放大,展示更多信息)
    23种设计模式探索C#
    windows快捷操作个人记录(常用)
    C#巧妙使用关键字async/await
    学习的枚举类型,结构以及初步了解数组
    目前学习.net时间让我摸不着头脑的事情
    对C#中几个循环语句的使用,请教
    学习了用控制台显示结果
  • 原文地址:https://www.cnblogs.com/avivaye/p/4938592.html
Copyright © 2011-2022 走看看