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(); } } }