java - 如何从元数据中了解列是已签名还是未签名?

标签 java database jdbc metadata

我正在获取数据库模式的元数据。我需要查明列是无符号数据类型还是有符号数据类型。我如何从获取元数据的结果集中找到它。哪一栏会给我相关信息?我的问题是如何从 java 代码中获取该列是已签名还是未签名?提供此信息的列标签是什么?

最佳答案

更新
从 java 结果集中,您可以获得该列是已签名还是未签名。以下面的代码为例:

ResultSet res=stmt.executeQuery("select * from tableName where 1<0");//just making sure no row is retrieved as we dont need any here..
ResultSetMetaData rsmd=res.getMetaData();
boolean isColumnOneSigned= rsmd.isSigned(1);

isSigned(int columnNumber):指示指定列中的值是否为有符号数。 您可以找到有关 ResultSetMetaData 的更多信息 here .这是非常有用的类(class)。

在数据库级别做同样的事情:-
对于 MySQL,属性存储在 INFORMATION_SCHEMA.COLUMNS 中的 COLUMN_TYPE 中。

mysql> show columns from ttypes;
+---------------+----------------------+------+-----+---------+-------+
| Field         | Type                 | Null | Key | Default | Extra |
+---------------+----------------------+------+-----+---------+-------+
| cid           | int(10) unsigned     | YES  |     | NULL    |       |
+---------------+----------------------+------+-----+---------+-------+

1 row in set (0.00 sec)

你必须解析出 Type 的内容并在其中找到 unsigned 或 not unsigned 它不会为 signed 列放入任何内容。 你可以像

这样选择查询
select COLUMN_NAME,COLUMN_TYPE from information_schema.COLUMNS where TABLE_NAME='ttypes' and COLUMN_TYPE LIKE '%unsigned%' 

关于java - 如何从元数据中了解列是已签名还是未签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32885561/

相关文章:

Java 1.7 小程序 CacheEntry 阻止动态更新

java - Android自定义点击监听器内联与字段减速为什么

android - OnListItemClick 在 Activity 中

java - 如何使用 java.sql 包中的 rs.getSQLXML() 函数从 Oracle 数据库获取 XMLType 列?

java - hibernate 正在四舍五入我的两倍?

java - 创建全局可访问的子电路/信号 (Logisim)

java - JPA,Postgresql和SQL INSERT语句:UTC时间戳无法正常工作

c++ - C/C++ 的多数据库库有哪些替代方案?

database - 如何在没有事务的情况下使用 Oracle?

Java JDBC 保存点