JDBC-Datum/Uhrzeit-Typ
P粉486138196
P粉486138196 2023-12-27 20:52:41
0
1
569

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

ändere
Column TITLE = new Column(JDBCType.VARCHAR).size(200).title("Created");

Mein kleiner Validator ändert die Spaltengröße auf 200. Dazu rufe ich die Metadaten als

ab
DatabaseMetaData 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?

P粉486138196
P粉486138196

Antworte allen(1)
P粉338969567

从通用 JDBC 角度来看,您可以使用 DatabaseMetaData .getColumns(...),这应该返回:

换句话说,它应该包含数据源中使用的数据类型的名称(在您的情况下,MySQL应该返回DATETIME)。

注意:我还没有真正验证过这一点,我的答案纯粹基于通用 JDBC 要求。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage