台球斯诺克视频直播
淘特cms
当前位置:淘特CMS->帮助?#34892;?/a>->常见问题
不到一百行代码实现一个Mysql数据库说明文档自动生成程序
  • 作者:
  • 日期:2019/3/3 16:15:09
  • 出处:淘特CMS
  • 点击:

我们在做软件项目开发中,通常需要设计数据库说明文档,虽说有一些工具能帮我们实现,不过总是感觉太重了,?#26800;?#26102;候我们是要边写代码,查看数据库结构,两个软件来回切换总是那么不习惯。这个问题作为java攻城狮的我们,秉着发扬自己动手丰衣足食的品格,我们就?#20013;?#19968;段程序,实现自动为?#20184;?#30340;数据库生成说明文档的功能。

首先看一下程序的执行效果:


上面截图中,我们制作一个jsp程序,因为是jsp程序,这样我们可以通过pc、手机浏览器,只要输入程序网址,就会将?#20184;?#25968;据库中所有表及每个表中的字段信息的属性都展示出来。我们公司通常都是每个小伙伴?#21450;?#36825;个程序放在自己的web应?#32654;錚?#26041;便随时查看数据库信息。而且有了它,在设计数据库的时候,一边设计一边说明文档就有了,是不是很方便?):)

下面看一下代码的样子


jsp程序文件源代码:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.DatabaseMetaData"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.ResultSetMetaData"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.Types"%>
<%out.clear();%>
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>数据库说明文档</title>
    <style>
      h1{}
      h2{font-size:14px; margin: 0; padding: 0; line-height: 32px; font-weight: 100;}
      .fields{ width:800px;}
      .fields th{ background-color: #46b8da; line-height: 22px; text-align: left; padding:5px;}
      .fields td{ background-color: #f5f5f5; width: 25%; line-height: 22px; text-align: left; padding:5px;}
    </style>
  </head>
  <body>    
    <%      
      Connection conn = null;
      ResultSet rs = null,rs2=null;
      Statement stmt=null,stmt2=null;
      String dbname=request.getParameter("dbname");//你的数据库名称
      String dbuser="root";//你的数据库连接用户名
      String dbpassword="";//你的数据库连?#29992;?#30721;
      try {
        conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/"+dbname+"?useUnicode=true&amp;characterEncoding=UTF-8",dbuser,dbpassword);
        stmt=conn.createStatement();
        stmt2=conn.createStatement();
        //遍历查询数据库中的表
        rs =stmt.executeQuery("select table_name,table_comment from information_schema.tables where table_schema = '"+dbname+"'");
        while (rs.next()) {
          out.print("<h1>表名:"+rs.getString(1)+"</h1>\n");
          out.print("<h2>说明:"+rs.getString(2)+"</h2>\n");
          //查询表中的字段
          rs2=stmt2.executeQuery("show full fields from "+rs.getString(1));
          out.print("<table class=\"fields\" cellspacing=\"1\" cellpadding=\"0\">");
          out.print("<tr>");
          out.print("<th>名称</th>");
          out.print("<th>类型</th>");
          out.print("<th>默?#29616;?lt;/th>");
          out.print("<th>备注</th>");
          out.print("</tr>");          
          while(rs2.next()){
            out.print("<tr>");
            out.print("<td>"+rs2.getString(1)+"</td>");
            out.print("<td>"+rs2.getString(2)+"</td>");
            out.print("<td>"+rs2.getString(6)+"</td>");
            out.print("<td>"+rs2.getString(9)+"</td>");
            out.print("</tr>");
          }          
          out.print("</table>");
        }
      } catch (SQLException e) {
      } finally {
        try {
          rs.close();
          rs2.close();
          stmt.close();
          stmt2.close();
          conn.close();
        } catch (Exception e) {
        }
      }
    %>
    
  </body>
</html>


代码第30行dbname变量即是要查看的数据库名称信息。其实我们也可以把这个变量设计为获取url参数来的值 ,?#28909;?

String dbname=request.getParameter("dbname");

这样,这个程序就可以支持多个数据库结构信息的查看了,方法就是我们在浏览器中访?#23454;?#22320;址换成以下:


好了,代码比较简单,短短几十行代码搞定数据库文档。但需要注意的是因为这里采用的mysql的内置的表和sql语句获取表和字段的信息,因此对于其它类型的数据库是不起作用的。如果想要做一个兼容所有数据库的程序,可以参考一下淘特jspcms,那里面有个在线数据库管理是可以兼容所有数据库,?#34892;?#36259;的朋友可以去研究一下。

最新评论
用 户:
内 容:
验证码:
台球斯诺克视频直播