Type date/heure JDBC
P粉486138196
P粉486138196 2023-12-27 20:52:41
0
1
568

J'ai une valeur DATETIME 列。我使用 ResultSet 元数据来检索列类型,它返回 TIMESTAMP 这是不正确的。如何获取此列的正确 java.sql.SQLType dans une base de données MySQL ?

Je vais essayer d'être plus précis. Je définis la structure de la base de données en utilisant du code Java. Par exemple ;

Column TITLE = new Column(JDBCType.VARCHAR).size(100).title("Created");

Ensuite, mon petit code de validation crée cette colonne (en supposant que la table y soit définie). Puis plus tard si je modifie ce code en

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

Mon petit validateur modifie la taille de la colonne à 200. Pour ce faire, je récupère les métadonnées sous forme de

DatabaseMetaData metaData = connection.getMetaData();

Accédez ensuite aux propriétés de la colonne

ResultSet resultSet = metaData.getColumns(getCatalog(), schema, table, columnName);

Cela renverra la classe JDBCType 枚举。假设我在 MySQL DATETIME 列上运行此查询。我确实知道在Java中没有这样的东西,它的等价物是 java.sql.Timestamp. Mais dans MySQL, DATETIME n'est pas TIMESTAMP.

Comment différencier MySQL DATETIME和MySQL TIMESTAMP en code Java ?

P粉486138196
P粉486138196

répondre à tous(1)
P粉338969567

D'un point de vue générique JDBC, vous pouvez utiliser la colonne DatabaseMetaData .getColumns(...)DatabaseMetaData .getColumns(...), cela devrait renvoyer :

En d'autres termes, il doit contenir le nom du type de données utilisé dans la source de données (dans votre cas, MySQL doit renvoyer DATETIMEDATETIME).

Remarque : je n'ai pas réellement vérifié cela, ma réponse est uniquement basée sur les exigences génériques de JDBC.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal