Every ResultSet object is associated with one ResultSetMetaData object. This object will have all the meta data about a ResultSet object like schema name, table name, number of columns, column name, datatype of a column etc. You can get this ResultSetMetaData object using getMetaData() method of ResultSet.
The getColumnType() method of the ResultSetMetaData (interface) retrieves the type of the specified column in the current ResultSet object.
The getMetaData() method of ResultSet interface returns the object of ResultSetMetaData.
The ResultSetMetaData.getColumnType(int column)
returns a int
value specifying the column type found in java.sql.Types
.
Example:
Connection connection = DriverManager.getConnection(JDBC_URL, JDBC_USERNAME, JDBC_PASSWORD);
PreparedStatement statement = connection.prepareStatement(JDBC_SELECT);
ResultSet rs = statement.executeQuery();
PrintStream out = System.out;
if (rs != null) {
while (rs.next()) {
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
if (i > 1) {
out.print(",");
}
int type = rsmd.getColumnType(i);
if (type == Types.VARCHAR || type == Types.CHAR) {
out.print(rs.getString(i));
} else {
out.print(rs.getLong(i));
}
}
out.println();
}
}
You can call,
To returns designated column's SQL type.
int ResultSetMetaData.getColumnType(int column)
To return designated column's database-specific type name.
String ResultSetMetaData.getColumnTypeName(int column)
ResultSet rs;
int column;
.....
ResultSetMetaData metadata = rs.getMetaData();
metadata.getColumnTypeName(column); // database specific type name
metadata.getColumnType(column); // returns the SQL type
I think the above answer is not going in loop and have some lack in details. This code snippet can improve to just show Column Name and corresponding datatype. Here is the fully working code
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
public class Test {
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String HOST = "192.168.56.101";
private static final String PORT = "3316";
private static final String CONNECTION_URL = "jdbc:mysql://"+HOST+":"+PORT+"/";
private static final String USERNAME = "user";
private static final String PASSWORD = "pwd";
private static final String DATABASE = "db";
private static final String TABLE = "table";
private static final String QUERY = "select * from "+DATABASE+"."+TABLE+" where 1=0";
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName(DRIVER);
Connection con = DriverManager.getConnection (CONNECTION_URL , USERNAME, PASSWORD);
ResultSet rs = con.createStatement().executeQuery(QUERY);
if (rs != null) {
System.out.println("Column Type\t\t Column Name");
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
System.out.println(rsmd.getColumnTypeName(i)+"\t\t\t"+rsmd.getColumnName(i));
}
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With