代码:
/**********************************************************************************
连接mysql数据库中的information_schema数据库,获取要迁移的mysql数据库中各个表中的字段数目和名称
***********************************************************************************/
package conn;
import java.sql.*;
public class getobject {
// static int ms[]=null;//用于存放每个表中的字段的数目ms[1]即第一个表的字段数目
//static String[] arr = null;//用于存放字段名称
//static String[] brr = null;//用于存放字段名称对应的数据类型
//static String[][] Arr=null;
//static String[][] Brr=null;
static String[][][] Crr=new String[2][][];
public static String[][][] getob(String database,String[] table) throws Exception {
Connection conn=mysqlconn.connDB();
Statement stmt = conn.createStatement();
int len=table.length;//实实在在的存在的各个table名 用的是上面table方法查询返回的值
//Arr=new String[len][];
//Brr=new String[len][];
Crr[0]=new String[len][];
Crr[1]=new String[len][];
int m=1;
for(int i=0;i<len;i++){
String query="select count(COLUMN_NAME) from COLUMNS where TABLE_SCHEMA="+"\""+
database+"\" and TABLE_NAME="+"\""+table[i]+"\"";
ResultSet rs = stmt.executeQuery(query);//每次只能返回一行
int l=0,n=0;
while (rs.next()) {// 2 rs共有1行数据
l=rs.getInt(1);
//System.out.printf("There are %d tables in your database: %s ! \n",m,database);
System.out.printf("您要迁移的Mysql数据库-%s中的表-%s共有%d个字段! \n",database,table[i],l);
// ms= new int[l];
// ms[m]=l;
//System.out.println("table["+m+"]:"+ms[m]);
System.out.println("table["+m+"]:"+l);
m++;
//System.out.println(m);
// arr=new String[l];
// Arr[i]=new String[l];
Crr[0][i]=new String[l];
//brr=new String[l];
//Brr[i]=new String[l];
Crr[1][i]=new String[l];
}//2 while
if (rs != null) {
rs.close();
}
String query1="select COLUMN_NAME,DATA_TYPE from COLUMNS where TABLE_SCHEMA="+"\""+
database+"\" and TABLE_NAME="+"\""+table[i]+"\"";
ResultSet rs1 = stmt.executeQuery(query1);
while(rs1.next()){
Crr[0][i][n]=rs1.getString(1);
Crr[1][i][n]=rs1.getString(2);
// arr[n]=rs1.getString(1);
//brr[n]=rs1.getString(2);
System.out.print("Crr[0]["+i+"]["+n+"]:"+Crr[0][i][n]+","+"Crr[1]["+i+"]["+n+"]:"+Crr[1][i][n]+"\t");
//System.out.print("arr["+n+"]:"+arr[n]+","+"brr["+n+"]:"+brr[n]+"\t");
// Arr[i][n]=arr[n];
//Brr[i][n]=brr[n];
//Crr[0][i][n]=Arr[i][n];
//Crr[1][i][n]=Brr[i][n];
n++;
}//while外层
System.out.print("\n");
if (rs1 != null) {
rs1.close();
}
}//for
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
return Crr ;
}//getob
}//getobject
注:获取要迁移的数据库中所有数据表的列名及各列的数据类型存储在以个三维数组中。