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