操作元数据 (二)

2014-11-24 07:29:09 · 作者: · 浏览: 1
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println("程序结束!!!");
}
}
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.NamingException;

public class DataBaseMetaDataTest {
public static void main(String[] args) {
Connection con = null;
String jndiname = "jdbcPool/mydatasource";
try {
con = DBCon.getConnectionFromPooledDataSource(jndiname);
// 测试数据库信息www.2cto.com
DatabaseMetaData dm = con.getMetaData();
System.out.println("1. 数据库的基本信息");
System.out.println("Database is " + dm.getDatabaseProductName());
System.out.println("Database version is "
+ dm.getDatabaseProductVersion());
System.out.println("JDBC Driver is " + dm.getDriverName());
System.out.println("JDBC driver version is "
+ dm.getDriverVersion());
// 获取数据库中目录(数据库)的信息
System.out.println("2. 数据库中目录(数据库)的信息");
ResultSet catalogs = dm.getCatalogs();
while (catalogs.next()) {
System.out.println(catalogs.getString(1));
}
// 获取数据库中模式的信息
System.out.println("3. 数据库中模式的信息");
ResultSet schemas = dm.getSchemas();
while (schemas.next()) {
System.out.println(schemas.getString(1));
}
// 获取数据库中各个表的情况
System.out.println("4. 数据库中各个表的信息");
ResultSet tables = dm.getTables("pubs", null, null, null);
while (tables.next()) {
for (int i = 0; i < 5; i++) {
System.out.print(tables.getString(i + 1));
System.out.print(" | ");
}
System.out.println();
}
// 获取数据库表中各个列的信息
System.out.println("5. 数据库表中各个列的信息");
ResultSet columns = dm.getColumns(null, null,
"student", null);
while (columns.next()) {
for (int i = 0; i < 18; i++) {
System.out.print(columns.getString(i + 1));
System.out.print(" | ");
}
System.out.println();
}
} catch (NamingException ex) {
System.err.println("Name Not Bound : " + ex.getMessage());
} catch (SQLException ex) {
System.err.println("SQLException : " + ex.getMessage());
} finally {
try {
if (con != null)
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println("程序结束!!!");
}
}

ResultSetMetaData(结果集元数据)

根据结果集的元数据,可以得到一个查询结果集关于查询表中列的个数,各个列名,类型以及各个列的宽度等。ResultSetMetaData的对象可以由ResultSet对象的getMetaData()方法得到。

ResultSetMetaData对象的常用方法如下:

n ResultSet rs=stmt.executeQuery();

n ResultSetMetaData rsmd=rs.getMetaData();

n rsmd.getColumnCount()//返回ResultSet对象的列数。

n rsmd.getColumnDisplaySize(int column);//返回column指定的列的最大宽度。

n rsmd.getColumnLabel(int column)//返回column指定列的标签。

n rsmd.getColumnName(int column)//返回column指定列的列名。

请看下例:

[java]
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.NamingException;

public class ResultSetMetaDataTest {
public static void main(String[] args) {
Statement stmt = null;
ResultSet rs = null;
Connection con = null;
String jndiname = "jdbcPool/mydatasource";
try {
con = DBCon.getConnectionFromPooledDataSource(jndiname);
stmt = con.createStatement();
String querySQL1 = "sele