有什么方法可以将 MySQL 数据库的 DataTypes 放入 java 程序中?
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();
}
}
嗨,我们可以通过实现一些 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 数字类型,尽管可能会发生舍入、溢出或精度损失。
如果您尝试获取具有数据类型的列的列表,请使用系统表:
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;
您可以使用DatabaseMetaData.getTypeInfo()
检索数据库中的类型名列表、相应的 JDBC 类型和最大精度等信息。