Ich habe einen DATETIME
列。我使用 ResultSet
元数据来检索列类型,它返回 TIMESTAMP
这是不正确的。如何获取此列的正确 java.sql.SQLType
Wert in einer MySQL-Datenbank?
Ich werde versuchen, genauer zu sein. Ich definiere die Struktur der Datenbank mithilfe von Java-Code. Zum Beispiel;
Column TITLE = new Column(JDBCType.VARCHAR).size(100).title("Created");
Dann erstellt mein kleiner Validierungscode diese Spalte (vorausgesetzt, die Tabelle ist dort definiert). Später dann, wenn ich diesen Code in
ändereColumn TITLE = new Column(JDBCType.VARCHAR).size(200).title("Created");
Mein kleiner Validator ändert die Spaltengröße auf 200. Dazu rufe ich die Metadaten als
abDatabaseMetaData metaData = connection.getMetaData();
Dann greifen Sie auf die Spalteneigenschaften zu
ResultSet resultSet = metaData.getColumns(getCatalog(), schema, table, columnName);
Dadurch wird die JDBCType
枚举。假设我在 MySQL DATETIME
列上运行此查询。我确实知道在Java中没有这样的东西,它的等价物是 java.sql.Timestamp
-Klasse zurückgegeben. Aber in MySQL ist DATETIME nicht TIMESTAMP.
Wie unterscheidet man MySQL DATETIME
和MySQL TIMESTAMP
im Java-Code?
从通用 JDBC 角度来看,您可以使用
DatabaseMetaData .getColumns(...)
,这应该返回:换句话说,它应该包含数据源中使用的数据类型的名称(在您的情况下,MySQL应该返回
DATETIME
)。注意:我还没有真正验证过这一点,我的答案纯粹基于通用 JDBC 要求。