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


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

从Types类中检索整数值

要打印`java.sql.Types`类中所有常量的类名和值:

  • **检索Types类中的所有字段** - `Class`类的`getFields()`方法返回一个数组,该数组包含当前`Class`对象表示的类/接口的所有字段(公共字段)。使用此方法检索`Types`类的字段数组,如下所示:
Field[] fields = java.sql.Types.class.getFields();
  • **检索每个字段的名称和值** - `Field`类的`getName()`方法返回当前字段对象表示的字段的名称。
  • 同样,`Field`类的`get()`方法返回当前字段对象表示的字段的值。
  • 使用这两个方法打印`Types`类的每个字段的名称和值,如下所示:
for(int i = 0; i<fields.length; i++) {
   //Retrieving the name of the field
   String name = fields[i].getName();
   //Retrieving the value of the field
   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 {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://127.0.0.1/sampledatabase";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established: "+con);
      //Retrieving all the fields
      Field[] fields = java.sql.Types.class.getFields();
      for(int i = 0; i<fields.length; i++) {
         //Retrieving the name of the field
         String name = fields[i].getName();
         //Retrieving the value of the field
         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

更新于:2019年7月30日

133 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告