java - 使用 JDBC 检查 Sybase 中的列是否自动递增

标签 java jdbc metadata sybase

要检查列是否自动递增,我可以执行以下操作

Connection con = ...    
DatabaseMetaData meta = con.getMetaData();
ResultSet metaCols = meta.getColumns(catalog, schema, table, "%");
while ( metaCols.next() )   
     String value = rs.getString("IS_AUTOINCREMENT")    
  ...

工作正常,除了 Sybase 数据库。我已经尝试使用 jTDS 和 JConnect 驱动程序,但是对于这两个驱动程序我都遇到了这个异常:

java.sql.SQLException: Invalid column name IS_AUTOINCREMENT.

是否还有其他方法可以查明 Sybase 中的列是否自动递增? 我认为“IS_AUTOINCREMENT”是 JDBC4 的一个特性,而 jTDS 是一个 JDBC4 兼容的驱动程序。

最佳答案

Sybase 使用“标识”列而不是“默认自动增量”,这就是我相信您收到此消息的原因。

尝试检查 TYPE_NAME 列是否包含关键字“identity”。

标识列的行为也有点不同,但这是一个旁白。

关于java - 使用 JDBC 检查 Sybase 中的列是否自动递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/553751/

相关文章:

java - 尝试将文件上传到 Google 云端硬盘的特定文件夹。尽管 http 请求具有正确的文件夹 ID,但它还是被上传到文件夹之外

java - 处理 MySQL 查询花费的时间太长并抛出 "Communications link failure"

tsql - 忽略 jdbc 批处理中的错误语句

java - 在 Oracle DB 中唯一标识源 JDBC 进程

c#:使用程序集(通过反射)作为(元)数据存储

javascript - 如何使用javascript获取网页的长度/大小

java - JPA:使用计数直接将集合大小映射到属性?

java - 我已经将我的 Maven 依赖项的范围更改为提供

java - 名称 [资源] 未在此上下文中绑定(bind)。找不到 [jdbc]

java - Java中获取注解元数据的方法