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 ?
D'un point de vue générique JDBC, vous pouvez utiliser la colonne
DatabaseMetaData .getColumns(...)
, cela devrait renvoyer :DatabaseMetaData .getColumns(...)
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
DATETIME
DATETIME
).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.