获得某表所有列的信息:
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()可生成其实现类的对象....
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)