package book.database;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class GetMetadata {
public static void showDatabaseMetadata(Connection con){
try{
DatabaseMetaData md=con.getMetaData();
System.out.println("数据库"+md.getURL()+"的元数据如下:");

}catch (SQLException e){
e.printStackTrace();
}
}
public static void showTableMetaData(Connection con,String tableName){
String sql="SELECT * FROM"+tableName;
Statement sm=null;
try{
sm=con.createStatement();
ResultSet rs= sm.executeQuery(sql);

ResultSetMetaData md = rs.getMetaData();

System.out.println("数据表"+tableName+"的元数据如下:");
int columnCount = md.getColumnCount();
System.out.println("column count:"+columnCount);
System.out.println();
StringBuffer sb =new StringBuffer("");
sb.append("sn\tname\t\t").append("type\t\t");
sb.append("scale\t").append("isNullable");
System.out.println(sb);
sb.delete(0, sb.length());
for(int i=1;i<=columnCount;i++){
sb.append(i).append("\t");
sb.append(md.getColumnName(i)).append("\t\t");
sb.append(md.getColumnTypeName(i)).append("\t\t");
sb.append(md.getScale(i)).append("\t");
sb.append(md.isNullable(i));
System.out.println(sb);
sb.delete(0,sb.length());
}
rs.close();
}catch(SQLException e){
e.printStackTrace();
}finally{
if (sm!= null){
try{
sm.close();
}catch(SQLException e1){
e1.printStackTrace();
}
}
}
}
public static void main(String[] args) throws ClassNotFoundException,SQLException{
String dbName = "books";
String tableName = "book";
String userName = "root";
String password = "123456";
Connection con = null;
try{
con = DBConnector.getMySQLConnection(null,null,null,dbName,userName,password);
GetMetadata.showDatabaseMetadata(con);
System.out.println();
GetMetadata.showTableMetaData(con,tableName);
}catch (ClassNotFoundException e1){
throw e1;
}catch (SQLException e2){
throw e2;
}finally {
if (con != null){
try{
con.close();
}catch(SQLException e1){
e1.printStackTrace();
}
}
}
}
}
获得数据库和表的元数据
在eclipse上运行这样子
求解
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROMbook' at line 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3206)
at com.mysql.jdbc.Statement.executeQuery(Statement.java:1232)
at book.database.GetMetadata.showTableMetaData(GetMetadata.java:23)
at book.database.GetMetadata.main(GetMetadata.java:68)