JDBC: Welche Spalte(n) hat/haben PrimärKey?

holtiwilan

Mitglied
Hallo.
Schon wieder ich. ;-)

Wie finde ich mit JDBC herraus, welche Spalte oder Spalten der PrimaryKey sind?

Ich will die Daten aus einem Resultset in eine Hashtable Speichern, wo der Key der HashTable der Key der Table ist und als Value ist dann ein Vector mit dem Tupel.

Beispiel:
[{1}{1,Hans,Mustermann}

Vielen Dank und Grüsse aus Freiburg.

Tim
 
Hallo!

Code:
/**
 * 
 */
package de.turoials;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

/**
 * @author Darimont
 */
public class PrimaryKeyDetectionExample {

	/**
	 * mysql> create table foo (id int, data varchar(32), primary key(id));
	 * Query OK, 0 rows affected (0.09 sec)
	 * 
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		Class.forName("com.mysql.jdbc.Driver");

		MysqlDataSource mds = new MysqlDataSource();
		mds.setServerName("localhost");
		mds.setDatabaseName("test");
		mds.setPort(3306);
		mds.setUser("root");
		mds.setPassword("");

		Connection con = mds.getConnection();

		DatabaseMetaData dbmd = con.getMetaData();

		ResultSet rs = dbmd.getPrimaryKeys("test", "root", "foo");
		ResultSetMetaData rsmd = rs.getMetaData();

		int clmCnt = rsmd.getColumnCount();

		for (int i = 1; i <= clmCnt; i++) {
			System.out.print(rsmd.getColumnName(i));
			System.out.print(" ");
		}
		System.out.println();

		while (rs.next()) {
			for (int i = 1; i <= clmCnt; i++) {
				System.out.print(rs.getString(i));
				System.out.print(" ");
			}
			System.out.println();
		}

		con.close();

	}
}

gruß Tom
 
Zurück