::元数据教程:
ResultSetMetaData是关于ResultSet的,也就是他是包含结果信息的一个类,下面的代码是这个类的典型运用:
ResultSet rs=stmt.executeQuery("select * from whl");
ResultSetMetaData rsmd=rs.getMetaData();
int num=rsmd.getColumnCount();//返回结果集中的列数目
System.out.println(num);
while(rs.next()){
for(int i=1;i<=num;i++){
String s=rs.getString(i);
System.out.println("column"+":"+s);
System.out.println("");
}
}
for(int i=1;i<=num;i++){
if(i>1)System.out.println(",");
System.out.println(rsmd.getColumnName(i));//返回表的列名
}
for(int i=1;i<=num;i++){
if(i>1)System.out.println(",");
System.out.print("column"+i+"is jdbc type"+rsmd.getColumnType(i));//返回列的类型用int表示,即用jdbcType表示
System.out.println(", which the DBMS calls"+rsmd.getColumnTypeName(i));//返回列的类型 名(如varchar)
}
如果不知道每一列的类型名时,用下面的方法读取每行的值是一种很常用的方法(如果数据类型包括BLOB之类的时,可用getObject()方法):
int num=rsmd.getColumnCount();//返回结果集中的列数目
System.out.println(num);
while(rs.next()){
for(int i=1;i<=num;i++){
String s=rs.getString(i);
System.out.println("column"+":"+s);
System.out.println("");
}
下面是DatabaseMetaData对象的一些方法的运用:
import java.sql.*;
public class Database {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("org.gjt.mm.mysql.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","5313186");
Statement stmt=con.createStatement();
DatabaseMetaData dbmd=con.getMetaData();
String escape=dbmd.getSearchStringEscape();//DBMS使用的转义符
System.out.println("escape is"+escape);
String key=dbmd.getSQLKeywords();//DBMS支持的关键字列表
System.out.println("key is"+key);
String functions=dbmd.getStringFunctions();//字符串标量函数列表
System.out.println("functions is"+functions);
String dbmsName=dbmd.getDatabaseProductName();//所用和DBMS和名字(如:MYSQL)
ResultSet rs=dbmd.getTableTypes();//DBMS中可用表的类型
System.out.println("the following types of tables are available in "+dbmsName);
while(rs.next()){
System.out.println(rs.getString(1));
}
System.out.println("---------------");
ResultSet rs1=dbmd.getTypeInfo();//获取DBMS类型的有关信息
ResultSetMetaData rsmd=rs1.getMetaData();
int num=rsmd.getColumnCount();
for(int i=1;i<=num;i++){
if(i>1)System.out.println(",");
System.out.print("column"+i+"is jdbc type"+rsmd.getColumnType(i));//对应的JDBC类型码
System.out.println(", which the DBMS calls"+rsmd.getColumnTypeName(i));//对应的类型名
}
while(rs1.next()){
for(int i=1;i<num;i++){
String str=rs1.getString(i);
if(i>1)System.out.print(",");
System.out.print(str);
}
System.out.println("");
}
}
}