我正在获取数据库模式的元数据。我需要查明列是无符号数据类型还是有符号数据类型。我如何从获取元数据的结果集中找到它。哪一栏会给我相关信息?我的问题是如何从 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/