用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");
}
}