3

有什么方法可以将 MySQL 数据库的 DataTypes 放入 java 程序中?

4

4 回答 4

4

getColumnTypeName()上使用ResultSetMetaData

这方面的一个例子是:

public class getColumnDataTypes  
{  
     public static void main (String[] args) throws Exception
     {
          String driver = "com.mysql.jdbc.Driver";
          String connString = "jdbc:mysql://localhost:3300/DATABASE,USERNAME,PASSWORD";

          Class.forName(driver);
          Connection connection = DriverManager.getConnection(connString);

          Statement statement = connection.createStatement();

          //Query
          ResultSet resultSet = statement.executeQuery("SELCET * FROM table");

          ResultSetMetaData rsmd = resultSet.getMetaData();

          //Get number of columns returned
          int numOfCols = rsmd.getColumnCount();

          //Print out type for each column
          for(int i=1; i<=numOfCols; ++i)
          {
               System.out.println("Column [" + i + "] data type: " + rsmd.getColumnTypeName(i));
          }

          //Close DB connection
          statement.close();          
          connection.close();    
     }
}
于 2012-09-27T05:06:30.947 回答
3

嗨,我们可以通过实现一些 java 已经拥有的类和包来做到这一点 -

1.CHAR、VARCHAR、BLOB、TEXT、ENUM 和 SET ->
java.lang.String、java.io.InputStream、java.io.Reader、java.sql.Blob、java.sql.Clob
2.FLOAT、REAL , 双精度, NUMERIC, DECIMAL, TINYINT, SMALLINT, MEDIUMINT, INTEGER, BIGINT->
java.lang.String, java.lang.Short, java.lang.Integer, java.lang.Long, java.lang.Double, java .math.BigDecimal
3.DATE, TIME, DATETIME, TIMESTAMP->
java.lang.String, java.sql.Date, java.sql.Timestamp
MySQL Connector/J 在处理 MySQL 数据类型和 Java 之间的转换方面很灵活数据类型。

一般来说,任何 MySQL 数据类型都可以转换为 java.lang.String,任何数字类型都可以转换为任何 Java 数字类型,尽管可能会发生舍入、溢出或精度损失。

于 2012-09-27T04:43:52.773 回答
1

如果您尝试获取具有数据类型的列的列表,请使用系统表:

SELECT TABLE_NAME, ORDINAL_POSITION, 
COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = {YOUR_DB}
ORDER BY TABLE_NAME, ORDINAL_POSITION;
于 2012-09-27T04:51:58.963 回答
0

您可以使用DatabaseMetaData.getTypeInfo()检索数据库中的类型名列表、相应的 JDBC 类型和最大精度等信息。

于 2012-09-29T08:33:52.680 回答