Maison  >  Questions et réponses  >  le corps du texte

Type date/heure JDBC

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粉486138196P粉486138196297 Il y a quelques jours510

répondre à tous(1)je répondrai

  • P粉338969567

    P粉3389695672023-12-28 13:22:01

    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.

    répondre
    0
  • Annulerrépondre