使用Java获取MySQL表中的所有主键
如何使用使用Java获取MySQL表中的所有主键,java,mysql,primary-key,Java,Mysql,Primary Key,如何使用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 那么,如何使用Java,获取MySQL表中所有主键的数组,或者将其转换为数组?没有像get
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
那么,如何使用
Java
,获取MySQL
表中所有主键的数组,或者将其转换为数组?没有像getPrimaryKeyValues()
这样的方法
您需要遍历ResultSet
来创建自己的值列表。比如:
PreparedStatement query = mySqlConnection.prepareStatement("SELECT * FROM `table`");
ResultSet results = query.executeQuery();
List<Object> results = results.getPrimaryKeyValues(); //I don't know what to put here
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 );
String sql=“从您的表名中选择名称”;
语句stmt=connection.createStatement();
结果集rs=stmt.executeQuery(sql);
列表名称=新的ArrayList();
while(rs.next())
{
name.add(rs.getString(1));
}
rs.close();
stmt.close();
System.out.println(名称);
首先,我想您不知道表中哪些列是主键。第一步是获取这些列名,然后获取值
要获取列名,请执行以下操作:
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;
}
然后,您可以从该查询中恢复数据,它将只包含给定表的主键。如果您有复合主键,您希望代码做什么?谢谢!我实际上是在做类似的事情,除了在
rs.getString(1)
中,每次循环时,我都会使1
递增(哎哟)。再次感谢!谢谢你的帮助!实际上,我可能会将您答案的底部部分用于我正在(尝试)开发的MySQL API!我希望你能接受两个答案,但遗憾的是,你不能。。。我选择camickr是因为它简单得多,但我可能仍然会使用你的一部分。。。谢谢+1对于,您应该。。。可能关闭您的连接;)代码>:D
DatabaseMetaData databaseMetaData = conn.getMetaData();
ResultSet resultSet = databaseMetaData.getPrimaryKeys(null, null , tablename);
while (resultSet.next()) {
String primarykeys= resultSet.getString(4);
System.out.println(primarykeys);
}
DatabaseMetaData databaseMetaData = conn.getMetaData();
ResultSet resultSet = databaseMetaData.getPrimaryKeys(null, null , tablename);
while (resultSet.next()) {
String primarykeys= resultSet.getString(4);
System.out.println(primarykeys);
}