[Schmitzm-commits] r1832 - trunk/schmitzm-db/src/main/java/de/schmitzm/postgres

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Sun Jan 22 01:37:52 CET 2012


Author: alfonx
Date: 2012-01-22 01:37:51 +0100 (Sun, 22 Jan 2012)
New Revision: 1832

Modified:
   trunk/schmitzm-db/src/main/java/de/schmitzm/postgres/PGUtil.java
Log:
	/**
	 * Liefdert eine Liste alle Spaltennamen in einer Tabelle.
	 * 
	 * ACHTUNG! Diese Methode schaut gerade nur auf den Tabellennamen! Das SChema wird ignoriert. Es gibt also probleme,
	 * wenn der selbe Tabellenname noch in einem anderen Schema existiert.
	 * 
	 * @param tableName
	 *            darf auch schema-informationen enthalten.
	 * @throws SQLException
	 */
	public List<String> listColumnsInTable(Connection c, String tableName) throws SQLException {
	

Modified: trunk/schmitzm-db/src/main/java/de/schmitzm/postgres/PGUtil.java
===================================================================
--- trunk/schmitzm-db/src/main/java/de/schmitzm/postgres/PGUtil.java	2012-01-21 20:19:22 UTC (rev 1831)
+++ trunk/schmitzm-db/src/main/java/de/schmitzm/postgres/PGUtil.java	2012-01-22 00:37:51 UTC (rev 1832)
@@ -259,6 +259,44 @@
 	}
 
 	/**
+	 * Liefdert eine Liste alle Spaltennamen in einer Tabelle.
+	 * 
+	 * ACHTUNG! Diese Methode schaut gerade nur auf den Tabellennamen! Das SChema wird ignoriert. Es gibt also probleme,
+	 * wenn der selbe Tabellenname noch in einem anderen Schema existiert.
+	 * 
+	 * @param tableName
+	 *            darf auch schema-informationen enthalten.
+	 * @throws SQLException
+	 */
+	public List<String> listColumnsInTable(Connection c, String tableName) throws SQLException {
+		List<String> cols = new ArrayList<String>();
+
+		String schema = "public";
+
+		if (tableName.contains(".")) {
+			final String[] split = tableName.split("\\.");
+			schema = split[0];
+			tableName = split[1];
+		}
+
+		String sql = "SELECT a.attnum, a.attname AS field, t.typname AS type,"
+				+ " a.attlen AS length, a.atttypmod AS length_var,"
+				+ " a.attnotnull AS not_null, a.atthasdef as has_default"
+				+ " FROM pg_class c, pg_attribute a, pg_type t" + " WHERE c.relname = '" + tableName + "'"
+				+ " AND a.attnum > 0" + "   AND a.attrelid = c.oid" + "   AND a.atttypid = t.oid"
+				+ " ORDER BY a.attnum;";
+		ResultSet rs = c.createStatement().executeQuery(sql);
+		try {
+			while (rs.next()) {
+				cols.add(rs.getString(1));
+			}
+		} finally {
+			rs.close();
+		}
+		return cols;
+	}
+
+	/**
 	 * Liefert <code>true</code> wenn der Benutzername im DBMS Superuser ist.
 	 */
 	public static boolean isSuperuser(Connection c, String username) throws SQLException {



More information about the Schmitzm-commits mailing list