Anzahl der Spalten eines ResultSets bestimmen

Status
Nicht offen für weitere Antworten.

WurstBrot

Neues Mitglied
Hallo,
ich bin noch relativ neu in der ganzen Materie und habe ein Problem.
Um mit einer DB auf einem MS SQL Server zu verbinden habe ich folgende Klasse:

Code:
public class DBConnector {
	
	public void processQuery(String query) {
		//Kreire Variable fuer ConnectionString
		String connectionUrl = "jdbc:sqlserver://localhost\\sqlexpress;" +
			"databaseName=spektrenalt;user=sa;password=root";
		
		//Deklaration JDBC Objekte
		Connection con = null;
		Statement stmt = null;
		ResultSet rs = null;
		try {
			//Verbindungsaufbau
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			con = DriverManager.getConnection(connectionUrl);
			
			//Erstelle und führe aus SQL Statement
			String SQL = query;
			stmt = con.createStatement();
			rs = stmt.executeQuery(SQL);
						
			//Iteriere durch ResultSet und stelle es dar
			while (rs.next()) {
				System.out.print(rs.getString(1));			
			}
		}
		
		//Fehlerbehandlung
		catch (Exception e) {
			e.printStackTrace();	
		}
		finally {
			if (rs != null) try { rs.close(); } catch (Exception e) {}
			if (stmt != null) try { stmt.close(); } catch (Exception e) {}
			if (con != null) try { con.close(); } catch (Exception e) {}
		}
	}

}
Ich gebe meien ResultSet mit rs.getString(1) aus.
Nun interessiert mich, ob es eine Möglichkeit gibt, den maximalen Spaltenindex des ResultSets zu ermitteln, um eventuell über eine for-Schleife eine Ausgabe zu generieren,für die der Übergabewert von getString() von 1 bis maxSpaltenIndex läuft.

Soweit erstmal vielen Dank
 
also mir fällt grad kein beispiel ein, in dem man die spaltenanzahl eines resulsets nicht kennt, aber ich versteh was du meinst und ich glaub das geht nicht 😉 du musst wohl oder übel deine spalten beim namen nennen, so viele werden es ja wohl nicht sein..
 
javadoc von ResultSet hat gesagt.:
The number, types and properties of a ResultSet object's columns are provided by the ResulSetMetaData object returned by the ResultSet.getMetaData method.
noch fragen, kienzle?
 
Ich kann sogar einen Beispielcode anbieten:

Code:
// Pseudo-SQL absetzen, Metadaten auslesen
ResultSet rs = stmt.executeQuery ("select * from " + dbFileName
                 + " where 'Y' = 'X'");

ResultSetMetaData meta   = rs.getMetaData();
anzFields = meta.getColumnCount();

// Tabellen für Metadaten + Daten anlegen
fieldName = new String[anzFields];
...

Meine Anwendung: Ein XML-Mapper der eine XML-Datei in die Datenbank schreibt/mappt. Dabei werden nur gleichnamige Felder (XML-Itemname = FeldName, XML-Knotenname = Datei) gemappt.

Diese Funktion hat jetzt schon einige EDIFACT-Mapping-Änderungen (Ausgabe XML-Datei) mitgemacht, ohne das ich das was nachbessern musste.

/Robert
 
@Rydl: ein beispiel, ist zb wenn du auf eine fremde datenbank, bzw undokumentierte datenbank zugreiffen musst
 
Danke Leute.
Das war genau was ich suchte.
:applaus:
So, und wie setz ich jetzt den "Frage beantwortet Haken" :autsch:
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben