JDBC日期时间类型
P粉486138196
P粉486138196 2023-12-27 20:52:41
0
1
565

我在 MySQL 数据库中有一个 DATETIME 列。我使用 ResultSet 元数据来检索列类型,它返回 TIMESTAMP 这是不正确的。如何获取此列的正确 java.sql.SQLType 值?

我会尝试更具体。我用 Java 代码定义数据库的结构。例如;

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

然后我的小型验证器代码创建此列(假设表定义在那里)。然后,稍后如果我将此代码修改为

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

我的小型验证器将列大小更改为 200。为此,我将元数据检索为

DatabaseMetaData metaData = connection.getMetaData();

然后访问列属性

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

这将返回 JDBCType 枚举。假设我在 MySQL DATETIME 列上运行此查询。我确实知道在Java中没有这样的东西,它的等价物是 java.sql.Timestamp 类。但在 MySQL 中,DATETIME 不是 TIMESTAMP。

如何在Java代码中区分MySQL DATETIME和MySQL TIMESTAMP

P粉486138196
P粉486138196

全部回复(1)
P粉338969567

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板