Java 如何检测列是否为计算列
我正在使用SQLServer2000和Java 我正在创建一个应用程序,其中包括从表中读取元数据,在另一台服务器上重新创建它们并携带数据 其中一个表是这样创建的:Java 如何检测列是否为计算列,java,sql-server-2000,calculated-columns,Java,Sql Server 2000,Calculated Columns,我正在使用SQLServer2000和Java 我正在创建一个应用程序,其中包括从表中读取元数据,在另一台服务器上重新创建它们并携带数据 其中一个表是这样创建的: CREATE TABLE some_table ( Date datetime NOT NULL, Code int NOT NULL, SameCodeAgainWTF AS Code ) 如何检测“SameCodeAgainWTF”列是计算列,以便在数据迁移阶段不尝试在其上插入值 我已经从连接
CREATE TABLE some_table (
Date datetime NOT NULL,
Code int NOT NULL,
SameCodeAgainWTF AS Code
)
如何检测“SameCodeAgainWTF”列是计算列,以便在数据迁移阶段不尝试在其上插入值
我已经从连接中获取了DatabaseMetaData对象。但我找不到一种方法来提供这些信息
...
DatabaseMetaData dbMetaData = connection.getMetaData();
...
提前谢谢
编辑1:
我想知道是否有一个解决方案而不运行另一个查询。如果有办法从DatabaseMetaData或ResultSetMetaData获取信息
我知道我可以查询syscolumns,但我想避免它
SELECT
sysobjects.name AS TableName,
syscolumns.name AS ColumnName
FROM syscolumns
INNER JOIN sysobjects
ON syscolumns.id = sysobjects.id
AND sysobjects.xtype = 'U' --User Tables
WHERE syscolumns.iscomputed = 1
包含已计算的列的查询
SELECT o.name as TableName, c.name as ComputedColumnName
FROM sysobjects o
INNER JOIN syscolumns c
ON o.id = c.id
AND c.iscomputed = 1
WHERE o.xtype = 'u'
“SELECT*FROM dbo.syscolumns WHERE iscomputed=1”我看到了这个解决方案,但我想知道是否有一种方法可以从数据库元数据或ResultSetMetaData中获取该信息,而无需为此编写另一个查询。由于没有发布其他答案,我将接受您的唯一方法。但是,在我的程序中,我最终使用了RecordSetMetaData中的isReadOnly方法。