用Java修改MySQL数据库的引擎

要修改数据库的引擎 首先该数据库要支持修改的引擎

编写获取数据源的类(看自己的数据库连接属性对西面的连接做修改)

本列数据库连接用到单例模式

单列的必要条件 静态的属性 私有的构造方法 对外公共的获取连接的方法

package com;
import Java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBconn {
 private static String driver = "com.MySQL.jdbc.Driver";
 private static String url = "jdbc:mysql://localhost:3306/nlticket2";
 private static String uname = "root";
 private static String pwd = "";
 private static Connection conn = null;   //静态的属性
 private DBconn() {//私有的构造方法
  super();
 }
 public static Connection getConn() {//对外提供公共的调用连接的方法
  if (conn == null) {
   try {
    Class.forName(driver);
    conn = DriverManager.getConnection(url, uname, pwd);
   } catch (ClassNotFoundException e) {
    e.printStackTrace();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return conn;
 }
}

编写修改数据库引擎的方法

package com;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Tool {
/**
 * 修改數據庫引擎
 *
 * @param conn
 *            數據庫連接
 * @param engines
 *            修改后的數據庫引擎
 */
public static void setDatabaseEngines(Connection conn, String engines) {
 try {
  DatabaseMetaData dbmd = conn.getMetaData();
  // 获得所有的表名
  ResultSet rs = dbmd.getTables(null, null, null,
    new String[] { "table" });
  while (rs.next()) {
   // 循环结果集 并執行修改數據庫引擎的sql
   String tname = rs.getString("table_name");
   String sql = "ALTER TABLE " + tname + " type=" + engines;
   conn.createStatement().executeUpdate(sql);
   System.out.println(tname + ": 已修改為 " + engines);
  }
  conn.close();
 } catch (SQLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  // 如果數據庫不支持 engines 在mysql里也執行不了sql 會報錯
  System.out.println("數據庫不支持 " + engines + " 引擎");
 }
}
public static void main(String[] args) {
 // 調用上面的方法 將數據庫修改為 INNODB
 setDatabaseEngines(DBconn.getConn(), "INNODB");
}
}