编写程序以获取JDBC中所有受支持的数据类型的列表?

java.sql包的名为Types的类包含表示SQL数据类型的常量。所有这些数据类型均由唯一的整数值表示。

从Types类中检索整数值

打印java.sql.Types类中所有类的名称和常量值-

  • 检索Types类中的所有字段-类ClassgetFields()方法返回一个数组,该数组保存当前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