繁体   English   中英

使用Java获取MySQL表中的所有主键

[英]Get all primary keys in a MySQL table using Java

如何使用Java MySQL表中所有主键的名称? 假设我有一张桌子:

Name │ Phone Number │ verified
─────┼──────────────┼─────────
John │ 871-123-1842 │    0
Mark │ 912-917-8172 │    1
Matt │ 182-134-9917 │    1
Jake │ 971-991-8264 │    1

我想从表中获取值JohnMarkMattJake

我知道可以有一种选择,就是只列出所有所有主键,并在添加新主键时将其添加到其中,只是我在寻找更简单的东西,它将占用更少的空间。 我正在寻找类似的东西:

PreparedStatement query = mySqlConnection.prepareStatement("SELECT * FROM `table`");
ResultSet results = query.executeQuery();
List<Object> results = results.getPrimaryKeyValues(); //I don't know what to put here

那么,如何使用Java MySQL表中所有主键的数组或可以变成数组的东西呢?

首先,我想您不知道表上哪些列是主键。 第一步将是获取这些列名称,然后获取值。

要获取列名:

public ArrayList<String> findPrimaryKeyColumnNames(Connection connection, 
                 String catalog, String schema, String table){ 
    /* open the connection*/
    ...

    ArrayList<String> columns = new ArrayList<String>();
    DatabaseMetaData dbData = connection.getMetaData();
    Resultset result = dbData.getPrimaryKeys(catalog, schema, table);
    while (result.next())
        columns.add(result.getString("COLUMN_NAME"));

    ... 
    /* you should... PROBABLY... close your connection ;) */

    return columns;
}

此方法的作用是返回一个ArrayList,其中包含作为参数表中外键的列的名称。

使用此新信息,您可以轻松进行如下动态查询:

String query = "SELECT ";
for(String column : columns) //columns contains the info from the first method
    query += column + ", ";
query = query.substring(0, query.length - 2); //you want to get rid of that extra comma
query += "FROM " + tableName;

然后,您可以从该查询中恢复数据,并且该数据仅包含给定表的主键。

没有像getPrimaryKeyValues()这样的方法。

您需要遍历ResultSet来创建自己的值列表。 就像是:

String sql = "Select Name from yourTableNameHere";

Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( sql );
List<String> names = new ArrayList<String>();

while (rs.next())
{
    names.add( rs.getString(1) );
}

rs.close();
stmt.close();

System.out.println( names );
 DatabaseMetaData databaseMetaData = conn.getMetaData();  

 ResultSet resultSet = databaseMetaData.getPrimaryKeys(null, null ,  tablename);          

while (resultSet.next()) {
                String primarykeys= resultSet.getString(4);
                System.out.println(primarykeys);
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM