JDBC ResultSetMetaData接口
时间:2020-01-09 10:35:21 来源:igfitidea点击:
使用java.sql.ResultSetMetaData接口可以获取有关ResultSet对象的元数据。当我们从数据库中检索数据时,每个ResultSet对象都将返回一个ResultSet对象,并且会有一个关联的ResultSetMetaData对象,其中包含有关返回的ResultSet的信息,例如表名,列数,列的数据类型。
如何获取ResultSetMetaData对象
我们可以通过调用ResultSet的getMetaData()方法来获取ResultSetMetaData实例。
ResultSet rs = stmt.executeQuery("从TABLE_NAME中选择a,b,c");
ResultSetMetaData rsmd = rs.getMetaData();
Java ResultSetMetaData中的方法
ResultSetMetaData的一些重要方法如下:
- getColumnCount()–返回此ResultSet对象中的列数。
- getColumnName(int column)–获取指定列的名称。
- getColumnType(int column)–检索指定列的SQL类型。
- getSchemaName(int column)–获取指定列的表的架构。
- getTableName(int column)–获取指定列的表名。
- isAutoIncrement(int列)–指示指定的列是否自动编号。
ResultSetMetaData Java示例
使用的数据库是MySql,模式是theitroad,使用的表是EMPLOYEE,其列为id,FIRST_NAME,LAST_NAME和DEPARTMENT,请注意,id是自动递增的。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class RSMDDemo {
public static void main(String[] args) {
Connection connection = null;
try {
// Load driver
Class.forName("com.mysql.cj.jdbc.Driver");
// connection object
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/theitroad",
"root", "admin");
// create Statement object
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery("Select * from Employee");
System.out.println("***ResultSet Metadata information***");
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
System.out.println("Number of columns in each row- " + columnCount);
System.out.println("ID column auto incremented- " + rsmd.isAutoIncrement(1));
System.out.println("Table Name- " + rsmd.getTableName(2));
for(int i = 1; i <= columnCount; i++) {
System.out.println("Column " + rsmd.getColumnName(i) + " is of type " + rsmd.getColumnTypeName(i));
}
// // Iterate through ResultSet
// while(rs.next()){
// System.out.println("id: " + rs.getInt("id") +
// " First Name: " + rs.getString("FIRST_NAME") +
// " Last Name: " + rs.getString("LAST_NAME")+
// " Dept: " + rs.getString("DEPARTMENT"));
// }
}catch(ClassNotFoundException | SQLException e) {
e.printStackTrace();
}finally{
if(connection != null){
//close connection
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
输出:
***ResultSet Metadata information*** Number of columns in each row- 4 ID column auto incremented- true Table Name- employee Column id is of type INT Column first_name is of type VARCHAR Column last_name is of type VARCHAR Column department is of type VARCHAR

