Java Tutorial/Database/SQL Data Type Java Data Type

Материал из Java эксперт
Перейти к: навигация, поиск

converting a java.sql.Types integer value into a printable name

import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Map;
public class Main {
  public static void main(String[] argv) throws Exception {
    String driverName = "com.jnetdirect.jsql.JSQLDriver";
    Class.forName(driverName);
    String serverName = "127.0.0.1";
    String portNumber = "1433";
    String mydatabase = serverName + ":" + portNumber;
    String url = "jdbc:JSQLConnect://" + mydatabase;
    String username = "username";
    String password = "password";
    Connection connection = DriverManager.getConnection(url, username, password);
    DatabaseMetaData dbmd = connection.getMetaData();
    ResultSet resultSet = dbmd.getTypeInfo();
    while (resultSet.next()) {
      String typeName = resultSet.getString("TYPE_NAME");
      short dataType = resultSet.getShort("DATA_TYPE");
      getJdbcTypeName(dataType);
    }
  }
  public static void getJdbcTypeName(int jdbcType) {
    Map map = new HashMap();
    // Get all field in java.sql.Types
    Field[] fields = java.sql.Types.class.getFields();
    for (int i = 0; i < fields.length; i++) {
      try {
        String name = fields[i].getName();
        Integer value = (Integer) fields[i].get(null);
        map.put(value, name);
      } catch (IllegalAccessException e) {
      }
    }
    System.out.println(map);
  }
}





Get the database-specific type name

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
public class Main {
  public static void main(String[] argv) throws Exception {
    String driverName = "com.jnetdirect.jsql.JSQLDriver";
    Class.forName(driverName);
    String serverName = "127.0.0.1";
    String portNumber = "1433";
    String mydatabase = serverName + ":" + portNumber;
    String url = "jdbc:JSQLConnect://" + mydatabase;
    String username = "username";
    String password = "password";
    Connection connection = DriverManager.getConnection(url, username, password);
    DatabaseMetaData dbmd = connection.getMetaData();
    ResultSet resultSet = dbmd.getTypeInfo();
    while (resultSet.next()) {
      // Get the database-specific type name
      String typeName = resultSet.getString("TYPE_NAME");
      short dataType = resultSet.getShort("DATA_TYPE");
    }
  }
}





Get the java.sql.Types type to which this database-specific type is mapped

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
public class Main {
  public static void main(String[] argv) throws Exception {
    String driverName = "com.jnetdirect.jsql.JSQLDriver";
    Class.forName(driverName);
    String serverName = "127.0.0.1";
    String portNumber = "1433";
    String mydatabase = serverName + ":" + portNumber;
    String url = "jdbc:JSQLConnect://" + mydatabase;
    String username = "username";
    String password = "password";
    Connection connection = DriverManager.getConnection(url, username, password);
    DatabaseMetaData dbmd = connection.getMetaData();
    ResultSet resultSet = dbmd.getTypeInfo();
    while (resultSet.next()) {
      String typeName = resultSet.getString("TYPE_NAME");
      short dataType = resultSet.getShort("DATA_TYPE");
    }
  }
}





Getting the Name of a JDBC Type

import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Map;
public class Main {
  public static void main(String[] argv) throws Exception {
    String driverName = "com.jnetdirect.jsql.JSQLDriver";
    Class.forName(driverName);
    String serverName = "127.0.0.1";
    String portNumber = "1433";
    String mydatabase = serverName + ":" + portNumber;
    String url = "jdbc:JSQLConnect://" + mydatabase;
    String username = "username";
    String password = "password";
    Connection connection = DriverManager.getConnection(url, username, password);
    DatabaseMetaData dbmd = connection.getMetaData();
    ResultSet resultSet = dbmd.getTypeInfo();
    while (resultSet.next()) {
      String typeName = resultSet.getString("TYPE_NAME");
      short dataType = resultSet.getShort("DATA_TYPE");
      getJdbcTypeName(dataType);
    }
  }
  public static void getJdbcTypeName(int jdbcType) {
    Map map = new HashMap();
    // Get all field in java.sql.Types
    Field[] fields = java.sql.Types.class.getFields();
    for (int i = 0; i < fields.length; i++) {
      try {
        String name = fields[i].getName();
        Integer value = (Integer) fields[i].get(null);
        map.put(value, name);
      } catch (IllegalAccessException e) {
      }
    }
    System.out.println(map);
  }
}





Java Object Types Mapped to JDBC Types

Java Object TypeJDBC Typejava.lang.StringCHAR, VARCHAR, or LONGVARCHARjava.math.BigDecimalNUMERICjava.lang.BooleanBITjava.lang.IntegerINTEGERjava.lang.LongBIGINTjava.lang.FloatREALjava.lang.DoubleDOUBLEbyte[]BINARY, VARBINARY, or LONGVARBINARYjava.sql.DateDATEjava.sql.TimeTIMEjava.sql.TimestampTIMESTAMPjava.sql.ClobCLOBjava.sql.BlobBLOBjava.sql.ArrayARRAYjava.sql.StructSTRUCTjava.sql.RefREFJava classJAVA_OBJECT


Java Types Mapped to JDBC Types

Java TypeJDBC Typejava.lang.StringCHAR, VARCHAR, or LONGVARCHARjava.math.BigDecimalNUMERICbooleanBITbyteTINYINTshortSMALLINTintINTEGERlongBIGINTfloatREALdoubleDOUBLEbyte[]BINARY, VARBINARY or LONGVARBINARYjava.sql.DateDATEjava.sql.TimeTIMEjava.sql.TimestampTIMESTAMPjava.sql.ClobCLOBjava.sql.BlobBLOBjava.sql.ArrayARRAYjava.sql.StructSTRUCTjava.sql.RefREFJava classJAVA_OBJECT


JDBC Types Mapped to Java Object Types

JDBC TypeJava Object TypeCHARjava.lang.StringVARCHARjava.lang.StringLONGVARCHARjava.lang.StringNUMERICjava.math.BigDecimalDECIMALjava.math.BigDecimalBITjava.lang.BooleanTINYINTjava.lang.IntegerSMALLINTjava.lang.IntegerINTEGERjava.lang.IntegerBIGINTjava.lang.LongREALjava.lang.FloatFLOATjava.lang.DoubleDOUBLEjava.lang.DoubleBINARYbyte[]VARBINARYbyte[]LONGVARBINARYbyte[]DATEjava.sql.DateTIMEjava.sql.TimeTIMESTAMPjava.sql.TimestampDISTINCTObject type of underlying typeCLOBjava.lang.ClobBLOBjava.lang.BlobARRAYjava.lang.ArraySTRUCTjava.lang.Struct or java.lang.SQLDataREFjava.lang.RefJAVA_OBJECTUnderlying Java class


Mapping Between Java to JDBC SQL Types

JDBC TypeJava TypeCHARjava.lang.StringVARCHARjava.lang.StringLONGVARCHARjava.lang.StringNUMERICjava.math.BigDecimalDECIMALjava.math.BigDecimalBITbooleanTINYINTbyteSMALLINTshortINTEGERintBIGINTlongREALfloatFLOATdoubleDOUBLEdoubleBINARYbyte[]VARBINARYbyte[]LONGVARBINARYbyte[]DATEjava.sql.DateTIMEjava.sql.TimeTIMESTAMPjava.sql.TimestampCLOBjava.sql.ClobBLOBjava.sql.BlobARRAYjava.sql.ArrayDISTINCTMapping of underlying typeSTRUCTjava.sql.StructREFjava.sql.RefJAVA_OBJECTUnderlying Java class


Retrieve type info from the result set

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
public class Main {
  public static void main(String[] argv) throws Exception {
    String driverName = "com.jnetdirect.jsql.JSQLDriver";
    Class.forName(driverName);
    String serverName = "127.0.0.1";
    String portNumber = "1433";
    String mydatabase = serverName + ":" + portNumber;
    String url = "jdbc:JSQLConnect://" + mydatabase;
    String username = "username";
    String password = "password";
    Connection connection = DriverManager.getConnection(url, username, password);
    DatabaseMetaData dbmd = connection.getMetaData();
    ResultSet resultSet = dbmd.getTypeInfo();
    while (resultSet.next()) {
      String typeName = resultSet.getString("TYPE_NAME");
      short dataType = resultSet.getShort("DATA_TYPE");
    }
  }
}





uses reflection to get all the field names from java.sql.Types.

import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Map;
public class Main {
  public static void main(String[] argv) throws Exception {
    String driverName = "com.jnetdirect.jsql.JSQLDriver";
    Class.forName(driverName);
    String serverName = "127.0.0.1";
    String portNumber = "1433";
    String mydatabase = serverName + ":" + portNumber;
    String url = "jdbc:JSQLConnect://" + mydatabase;
    String username = "username";
    String password = "password";
    Connection connection = DriverManager.getConnection(url, username, password);
    DatabaseMetaData dbmd = connection.getMetaData();
    ResultSet resultSet = dbmd.getTypeInfo();
    while (resultSet.next()) {
      // Get the database-specific type name
      String typeName = resultSet.getString("TYPE_NAME");
      // Get the java.sql.Types type to which this database-specific type is
      // mapped
      short dataType = resultSet.getShort("DATA_TYPE");
      getJdbcTypeName(dataType);
    }
  }
  public static void getJdbcTypeName(int jdbcType) {
    Map map = new HashMap();
    // Get all field in java.sql.Types
    Field[] fields = java.sql.Types.class.getFields();
    for (int i = 0; i < fields.length; i++) {
      try {
        String name = fields[i].getName();
        Integer value = (Integer) fields[i].get(null);
        map.put(value, name);
      } catch (IllegalAccessException e) {
      }
    }
    System.out.println(map);
  }
}