編寫一個程式來獲取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:///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 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.