簡體   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