J'ai une valeur DATETIME
列。我使用 ResultSet
元數(shù)據(jù)來(lái)檢索列類型,它返回 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
枚舉。假設(shè)我在 MySQL DATETIME
列上運(yùn)行此查詢。我確實(shí)知道在Java中沒(méi)有這樣的東西,它的等價(jià)物是 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.