java 获取mysql 某个数据库中所有表及表的列的信息

java 获取mysql 某个数据库中所有表及表的列的信息,第1张

mysql里面提供了很多方法来获取表结构和表列:如下方法

获得某表所有列的信息

String sql = select * from tname//tname为某一表名

Connection conn = ....

Statement st = conn.createStatement()

ResultSet rs = st.rs = st.executeQuery(sql)

ResultSetMetaData rsmd = rs.getMetaData()

int colcount = rsmd.getColumnCount()//取得全部列数

for(int i=0i<colcounti++){

String colname = rsmd.getColumnName(i)//取得全部列名

}

以上为某表字段具体查询,如果是查询表的信息,如在mysql服务器上那样的查询结果的话,可以用一下代码:

ResultSet.executeQuery("show tables")可以的到所有的表信息。

ResultSet.executeQuery("describe tname")可以得到表的字段信息。//tname为表名

public static void getConnAndTableStruct(){

Connection connection = null

PreparedStatement pstmt = null

ResultSetMetaData rsmd = null

try {

//mysql连接

Class.forName("org.gjt.mm.mysql.Driver")

connection = DriverManager.getConnection(

"jdbc:mysql://localhost:3306/test", "root", "root")

//oracle连接

//Class.forName("oracle.jdbc.driver.OracleDriver")

//String url="jdbc:oracle:thin:@173.10.2.11:1521:test"

// connection=DriverManager.getConnection(url,"root","root")

pstmt = (PreparedStatement) connection.prepareStatement("select * from user")

pstmt.execute() //这点特别要注意:如果是Oracle而对于mysql可以不用加.

rsmd = (ResultSetMetaData) pstmt.getMetaData()

className="User"

tableName="user"

for (int i = 1i <rsmd.getColumnCount() + 1i++) {

Table table=new Table()

table.setColumnName(rsmd.getColumnName(i))

table.setColumnType(rsmd.getColumnClassName(i).substring(rsmd.getColumnClassName

(i).lastIndexOf(".")+1))

tables.add(table)

System.out.println(rsmd.getColumnName(i)+ " " +rsmd.getColumnTypeName(i)

+" " +rsmd.getColumnClassName(i)+ " "+rsmd.getTableName(i))

}

}

catch (ClassNotFoundException cnfex) {

cnfex.printStackTrace()

}

catch (SQLException sqlex) {

sqlex.printStackTrace()

}

}

java.sql.ResultSetMetaData

--------------------------------------------------------------------------------

public interface ResultSetMetaData

可用于获取关于 ResultSet 对象中列的类型和属性信息的对象。以下代码片段创建 ResultSet 对象 rs,创建 ResultSetMetaData 对象 rsmd,并使用 rsmd 查找 rs 有多少列,以及 rs 中的第一列是否可以在 WHERE 子句中使用。

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2")

ResultSetMetaData rsmd = rs.getMetaData()

int numberOfColumns = rsmd.getColumnCount()

boolean b = rsmd.isSearchable(1)

以前写过,没有备份代码,用java.sql.ResultSetMetaData很简单就实现了,用rs.getMetaData()可生成其实现类的对象....


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6644003.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存