MySQL Java JDBC:如何获取自动递增列的名称?

时间:2011-07-14 13:49:24

标签: java mysql sql jdbc

我正在开发一个使MySQL数据库更简单的程序。现在我必须创建表单来添加和编辑数据库中表的数据。问题是,当我创建表单时,我不想显示自动递增列的字段。我只需要修复此列的名称,但我不知道如何找到自动增量列的名称。我试过查找答案,但我找到的只是找到自动生成密钥的信息。有人可以帮助我或指出我正确的方向吗?谢谢你的帮助。

更新 谢谢您的帮助。根据下面的答案,我想出了这个方法:

public Vector<String> getAutoIncrementedColumns(String table) {
    Vector<String> columnNames = new Vector<String>();
    Connection connection;
    try {
        connection = DriverManager.getConnection(getUrl(), getUser(),
                    getPassword());
        Statement statement = connection.createStatement();
        ResultSet result = statement.executeQuery("Select * from "+table);
        int columnCount = result.getMetaData().getColumnCount();
        for(int i = 1; i <=columnCount; i++){
            if(result.getMetaData().isAutoIncrement(i)){
                columnNames.add(result.getMetaData().getColumnName(i));
            }
        }

    } catch (SQLException e) {

        e.printStackTrace();
    }


    return columnNames;
}

4 个答案:

答案 0 :(得分:4)

获得ResultSet后,您可以调用其getMetaData方法获取ResultSetMetaData对象。从那里,您可以使用isAutoIncrement方法确定列是否为AUTO_INCREMENT列,并使用getColumnName来获取列的名称。

答案 1 :(得分:1)

EXTRA表的INFORMATION_SCHEMA.COLUMNS列应该包含此信息。

PS:这是我的头脑。没有MySql方便,你可能需要测试确认。

答案 2 :(得分:0)

班级ResultSetMetaData可以提供此信息。

但您必须先执行select *才能获得结果集。你可以做到

SELECT * FROM table LIMIT 1 

获取结果集。

答案 3 :(得分:0)

如果您可以访问架构information_schema,则可以从表中获取这些信息

  • TABLES(列:auto_increment,0 =不,1 =是)
  • COLUMNS(列:extra =特定列的auto_increment)