java 批量修改数据表字段类型

package com.inspur.ictsyy.admin.utils.screenDisplay.controller;

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 Test extends HttpServlet {

    private static final long serialVersionUID = 1L;
    Connection conn = null;
    Statement st = null;

    public Test() {
        super();
    }

    //获取conn
    public void init() throws ServletException {
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            conn = java.sql.DriverManager.getConnection("jdbc:mysql://10.110.63.40:3306/ict_syy_sc?useSSL=false&useUnicode=true&characterEncoding=utf-8", "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"));
            }
            for (String tableName : tables) {
                    System.out.println(tableName); 
                    ResultSet colRet = dbMetaData.getColumns(null,"%", tableName,"%"); 
                    while(colRet.next()) { 
                        String sql = null;
                        String columnName = colRet.getString("COLUMN_NAME"); 
                        String columnType = colRet.getString("TYPE_NAME"); 
                    if(columnType.equals("DECIMAL")){
                        sql = "alter table "+tableName+" modify column "+columnName+" decimal(18, 4) ;";
                         st = conn.createStatement();
                        st.execute(sql);
                        
                    }
                    }
            }
            st.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }




    }

    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();
            }
        }
    }
    public static void main(String[] args) throws IOException {
        Test test = new Test();
        try {
            test.init();
            test.doGet(null, null);
            test.destroy();
        } catch (ServletException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

posted @ 2021-03-09 16:29  无情风中  阅读(522)  评论(0编辑  收藏  举报