我正在获取数据库模式的元数据。我需要找出列是否是无符号或有符号数据类型。如何从获取元数据的resultSet中找到它。哪一栏会给我相关信息?我的问题是如何从java代码中获取列是已签名还是未签名?提供此信息的列标签是什么?
答案 0 :(得分:1)
更新
如果列是有符号或无符号的,则可以从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的更多信息。这是非常有用的课程。
在databsae级别执行相同操作: -
对于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,或者在那里找不到unsigned。它没有为签名列添加任何内容。 你可以选择
这样的查询select COLUMN_NAME,COLUMN_TYPE from information_schema.COLUMNS where TABLE_NAME='ttypes' and COLUMN_TYPE LIKE '%unsigned%'