# problem mit resultsetarray



## shAGGie (25. Mrz 2008)

habn grosses problem, hab mal die classen und die jsp reingepostet die nötig sind um die logik zu verstehen

also das problem ist das das resultset in dem die vielen tabellen drin stehen soll (17 tabellen) nicht nacheinander geordnet sind so wie der resultset der tabel_names ausgelesen wird. er spuckt mir auch nicht die werte aus den spalten wie in der jsp angegeben in die select dropdown list aus. ich weiss echt nicht wie ich das anders machen soll


```
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page import="de.kvdrfehl.db.*"%>
<%@page import="java.sql.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>KVdR Fehlermanagement</title>
</head>
<body>
<%
	DBResultSetArray dbrsa = new DBResultSetArray();
%>
<form action="?" method="POST">
	<select name="VSNR">
		<%try{
		while(dbrsa.getRSA()[13].next()){%>
			<option><%=dbrsa.getRSA()[13].getString(1) %></option>
			<option><%=dbrsa.getRSA()[13].getString(2) %></option>			
		<%}
		}catch(NullPointerException e){
			System.out.println("bullshittting kackendreck nuuuullllll");}%>
	</select>
</form>
</body>
</html>
```



```
package de.kvdrfehl.db;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBResultSet {
	
	private static ResultSet rsTablesTemp = null;
	private static ResultSet rsTables = null;
	private static Statement dbstat = null;
	
	public static ResultSet getRSTables(){
		try{
			if(rsTablesTemp == null){
				dbstat = DBConnection.getConnection().createStatement();
				rsTables = dbstat.executeQuery("SELECT TABLE_NAME FROM USER_TABLES");
				rsTablesTemp = rsTables;
			}
			return rsTablesTemp;			
		}catch(SQLException e){
			System.out.println("Tabellen nicht gefunden in USER_TABLES.");
		}
		return null;
	}
}
```



```
package de.kvdrfehl.db;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBResultSetArray {
	
	private static ResultSet[] rsa = null;
	private static Statement dbstat = null;
	
	public DBResultSetArray(){
		try{
			if (rsa == null){
				int i = 0;
				dbstat = DBConnection.getConnection().createStatement();
				rsa = new ResultSet[17];
			
				while(DBResultSet.getRSTables().next()){					
					rsa[i] = dbstat.executeQuery("SELECT * FROM " + DBResultSet.getRSTables().getString(1));
					i++;
				}			
			}
		}catch(SQLException e){
			e.printStackTrace();
			System.out.println("ResultSetArray konnte nicht gefüllt werden.");
		}
	}
	public ResultSet[] getRSA(){		
		return rsa;
	}
}
```


----------



## semi (25. Mrz 2008)

Deine Beans sollen dir den Umgang mit Daten aus der DB erleichtern, nicht erschweren.

Das hier geht schon mal gar nicht. Du kannst nicht mehrere ResultSets des gleichen Statements gleichzeitig 
offen halten
	
	
	
	





```
dbstat = DBConnection.getConnection().createStatement(); 
rsa = new ResultSet[17]; 
          
while(DBResultSet.getRSTables().next()){                
   rsa[i] = dbstat.executeQuery("SELECT * FROM " + DBResultSet.getRSTables().getString(1)); 
i++; 
}
```
Schreibe zuerst eine funktionierende Version für eine Tabelle.


----------



## shAGGie (27. Mrz 2008)

okay schonmal vielen dank, das wusste ich überhaupt nicht. 

würde ein statmentarray eine lösung darstellen? das man fürjedes resultset ein eigenes statement erstellt?


----------



## maki (27. Mrz 2008)

IMHO bist auf dem Holzweg mit Arrays...


----------



## shAGGie (27. Mrz 2008)

hmm also ich hab 17 tabellen die ich auslesen muss wie sollte ich das anders machen? soll ich für jede tabelle ne eigene bean erstellen?

ich hab echt kein plan


----------



## maki (27. Mrz 2008)

> soll ich für jede tabelle ne eigene bean erstellen?


Ja.

Willst du wirklich 17 Tabellen auf einmal darstellen?


----------



## shAGGie (27. Mrz 2008)

ja möchte die hauptwerte alle auf einer jsp darstellen


----------



## maki (27. Mrz 2008)

Wundere mich gerade was der User macht wenn er daten aus insgesamt 17 Tabellen sieht.. aber egal.

Bevor wir hier weitermachen, solltest du dir im klaren sein, das deine Klassen DBResultSet und DBResultSetArray nix taugen, wenn die Felder static sind, muss das schiefgehen, denn so kannst nur ein einziges Resultset haben.


----------



## shAGGie (27. Mrz 2008)

meinst du es wäre sinnvoll für jede tabelle eine class (bean) zu erstellen in der getter und setter für deren einträge sind?


----------



## maki (27. Mrz 2008)

Das DAO Pattern wäre auf jedenfall besser als das was du jetzt hast, wie sieht es denn mit den Java Grundlagen aus, zB. static?


----------



## shAGGie (27. Mrz 2008)

ja das static warn überleibsel von der vorrigen struktur, hatte statische funktionen benutzt anstatt den konstruktor der klassen.

hatte das nicht rausgenommen. und ne statische funktion greift nicht auf nichtstatische variable zu, wie dem auch sei

dao pattern ja? hab mich mit pattern noch nicht so ausseinandergesetzt.


----------

