ITEEDU

Java Gossip: ResultSetMetaData 类别

Meta Data即「数据的数据」(Data about data),ResultSet用来表示查询到的数据,而ResultSet数据的数据,即描述查询到的数据背后的数据描述,即用来表示表格名称、字段名称、字段型态等等,这些讯息您可以透过ResultSetMetaData来取得。

下面这个范例直接示范如何取得查询到的数据域位数、表格名称、字段名称与字段数据型态:

ResultSetMetaDataDemo.java
package onlyfun.caterpillar;
import java.sql.*;
public class ResultSetMetaDataDemo {
	public static void main(String[] args) {
		String driver = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://localhost:3306/GUESTBOOK?" +
		"useUnicode=true&characterEncoding=Big5";
		String user = "caterpillar";
		String password = "123456";
		Connection conn = null;
		Statement stmt = null;
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(
			url, user, password);
			stmt = conn.createStatement();
			ResultSet result = stmt.executeQuery(
			"SELECT * FROM message");
			ResultSetMetaData metadata =
			result.getMetaData();
			for(int i = 1;
			i <= metadata.getColumnCount();
			i++) {
				System.out.print(
				metadata.getTableName(i) + ".");
				System.out.print(
				metadata.getColumnName(i) + "\t|\t");
				System.out.println(
				metadata.getColumnTypeName(i));
			}
		}
		catch(ClassNotFoundException e) {
			System.out.println("找不到驱动程序");
			e.printStackTrace();
		}
		catch(SQLException e) {
			e.printStackTrace();
		}
		finally {
			if(stmt != null) {
				try {
					stmt.close();
				}?
				catch(SQLException e) {
					e.printStackTrace();
				}
			}
			if(conn != null) {
				try {
					conn.close();
				}
				catch(SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}
}