1

JTDSJDBCDriverを使用しています。バージョンは1.2.4です。特定のテーブルの列メタデータを取得しているとします。

ResultSet columnsRs = meta.getColumns(null, [pattern], [table name], null);
while(columnRs.next()){
    // I would like to know here if the current column is marked computed
}

ID計算フィールドのテーブル定義は次のとおりです

CREATE TABLE [dbo].[C_Currencies](
    [CurrencyID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [varchar](150) NOT NULL,
    [ID]  AS ([CurrencyID]),
 CONSTRAINT [pk_currency] PRIMARY KEY CLUSTERED 
(
    [CurrencyID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
4

1 に答える 1

2

DatabaseMetaData.getColumnsJava 7のJavaDocによると、この情報は、IS_GENERATEDCOLUMN値または空の文字列(つまり、不明)のいずれかで列に返されます。YESNO

この列はJDBC4.0で追加されました。私が知る限り、jTDSドライバーはJDBC3.0のみを実装しています。この列がjTDSのResultSetに存在しない場合は、Microsoft SQL Server JDBCドライバーに切り替えるか(ドライバーがこの列をサポートしていると思います)、次のようなものを使用してSQLServerのシステムビューを自分でクエリします。ID表の列の場合C_Currencies):

SELECT is_computed
FROM sys.tables t
INNER JOIN sys.columns c
    ON c.object_id = t.object_id
WHERE t.name = 'C_Currencies'
    AND c.name = 'ID'
于 2012-12-07T14:20:38.513 に答える