编写程序以获取JDBC中所有受支持的数据类型的列表?
java.sql包的名为Types的类包含表示SQL数据类型的常量。所有这些数据类型均由唯一的整数值表示。
从Types类中检索整数值
打印java.sql.Types类中所有类的名称和常量值-
检索Types类中的所有字段-类Class的getFields()方法返回一个数组,该数组保存当前Class对象表示的类/接口的所有文件(公共)。键入类,如下所示-
Field[] fields = java.sql.Types.class.getFields();
检索的名称和每个字段的值-的的getName()的的场类返回的名义提交由当前场对象表示。
同样,Field类的get()方法返回由当前字段对象表示的字段的值。
使用这两种方法打印Types类的每个字段的名称和值,如下所示-
for(int i = 0; i<fields.length; i++) { //检索字段名称 String name = fields[i].getName(); //检索字段的值 int value = (int) fields[i].get(null); System.out.println(name+" : "+value); }
示例
以下Java程序检索并打印所有数据类型及其由java.sql.Types类表示的值。
import java.sql.Connection; import java.sql.DriverManager; import java.lang.reflect.Field; public class ListOfDatatypes { public static void main(String args[])throws Exception { //注册驱动程序 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //获得连接 String mysqlUrl = "jdbc:mysql://localhost/sampledatabase"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("Connection established: "+con); //检索所有字段 Field[] fields = java.sql.Types.class.getFields(); for(int i = 0; i<fields.length; i++) { //检索字段名称 String name = fields[i].getName(); //检索字段的值 int value = (int) fields[i].get(null); System.out.println(name+" : "+value); } } }
输出结果
Connection established: com.mysql.jdbc.JDBC4Connection@4fccd51b BIT : -7 TINYINT : -6 SMALLINT : 5 INTEGER : 4 BIGINT : -5 FLOAT : 6 REAL : 7 DOUBLE : 8 NUMERIC : 2 DECIMAL : 3 CHAR : 1 VARCHAR : 12 LONGVARCHAR : -1 DATE : 91 TIME : 92 TIMESTAMP : 93 BINARY : -2 VARBINARY : -3 LONGVARBINARY : -4 NULL : 0 OTHER : 1111 JAVA_OBJECT : 2000 DISTINCT : 2001 STRUCT : 2002 ARRAY : 2003 BLOB : 2004 CLOB : 2005 REF : 2006 DATALINK : 70 BOOLEAN : 16 ROWID : -8 NCHAR : -15 NVARCHAR : -9 LONGNVARCHAR : -16 NCLOB : 2011 SQLXML : 2009 REF_CURSOR : 2012 TIME_WITH_TIMEZONE : 2013 TIMESTAMP_WITH_TIMEZONE : 2014