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