# sql abfrage im gui



## DasNooB (23. Sep 2008)

Hallo, ich habe folgendes problem, ich schreibe im moment an einem kleinen Admin Tool für mich, womit ich auf mySQL zugreifen kann. Ich habe soweit eine Funktionierende mySQL verbindung, ein funktionierendes Swing Menü usw. mein Problem an der sache ist, das ich meine Daten alle einzeln auslesen muss da ich noch keine andere möglichkeit habe, bzw. ich habe es so das jede tabellen zeile aufgerufen wird und daraus auch die einzelnen inhalte, ich hätte es jedoch gerne das ich eine komplette Zeile auslesen könnte, damit ich diese direkt einbinden könnte.

Ich habe es versucht über JPanel() jedoch weiß ich nicht ob dies überhaubt möglich ist, wenn man alle inhalte einzeln hat. ich würde mich sehr freuen wenn mir jemand helfen könnte.

(ich hoffe das man mein problem versteht, ich weiß leider sonst nicht wie ich es anders ausrücken sollte.)

mfg Kevin


----------



## ARadauer (23. Sep 2008)

> das ich meine Daten alle einzeln auslesen muss da ich noch keine andere möglichkeit habe, bzw. ich habe es so das jede tabellen zeile aufgerufen wird und daraus auch die einzelnen inhalte, ich hätte es jedoch gerne das ich eine komplette Zeile auslesen könnte, damit ich diese direkt einbinden könnte.


das versteh ich nicht



> ich hoffe das man mein problem versteht,


leider nicht, was meinst du mit komplete zeilen?,... "ich habe es so das jede tabellen zeile aufgerufen wird "...  hä? poste mal ein bisschen code


----------



## Guest (23. Sep 2008)

Also bei mir wird jeder einzelne Tabellen eintrag einzeln ausgelesen, also wirklich alles einzeln und ich möchte dies auf eine Grafische oberfläche bingen per JPanel().

Ich weiß dabei jedoch nicht wie ich dies anstellen soll, das ding ist auch das die einzelnen inhalte später auch noch editierbar sein müssten.




```
String url_set = "localhost";
		String user_set = "root";
		String dbname_set = "java_testsql";
		String pw_set = "";
		String tabelle = "rofl";
		
		String dburl_set = "jdbc:mysql://"+url_set+"/"+dbname_set;
		
		try{
			
			Class.forName("com.mysql.jdbc.Driver");
			
			}catch(ClassNotFoundException e){
				System.out.println("Keine Treiber Klasse gefunden.");
				Anwendung.login = false;
			}
			
		try{
			Connection cn = DriverManager.getConnection(dburl_set, user_set, pw_set);
			
			Statement state = cn.createStatement();
			ResultSet rs = state.executeQuery("SELECT * FROM "+tabelle);
			ResultSetMetaData rsmd = rs.getMetaData();
			int nmax = rsmd.getColumnCount();
			while(rs.next()){
				for(int n = 1 ; n<=nmax ; n++ ) 
                    System.out.print( rs.getString(n) + "\n" ) ; 
                 System.out.println() ; 
		 }
```
Das ist der Code den ich zum auslesen benutze, ich weiß jedoch auch nicht ob der zu 100% richtig ist.

danke schonmal für die schnelle antwort ^^ 
hoffe mal das dies weiterhilft mir zu helfen


----------



## ARadauer (23. Sep 2008)

> Ich weiß dabei jedoch nicht wie ich dies anstellen soll, das ding ist auch das die einzelnen inhalte später auch noch editierbar sein müssten.


überleg dir eine Datenstruktur in die du deine objekte rein wirfst...
zb eine ArrayList mit ArrayList mit Strings
ArrayList<ArrayListy<String>> 
tabelle      zeile          feld
und diese gibts du dann dan den aufrufer zurück, der kann sie dan in einer jtable anzeigen... 

normalerweise würd ich dir raten, dass du deine tabellen als objekte abbildest, das sie darstellen was sie darstellen sollen (kunden, schweine, rechnungen) aber ich glaub du willst das ziehmlich generisch halten...

les dich mal zum thema connection pool ein, dao pattern anschaun, mvc pattern anschaun, jtable tutorials im faq anschaun...


----------



## DasNooB (23. Sep 2008)

Danke für die Antwort, werde mal versuchen mich in die sachen reinzulesen ^^
da ich nich so den riesen plan von java habe 

hoffe mal das mir das auch so weiterhilft =)


----------



## ARadauer (23. Sep 2008)

welches ziel verfolgst du genau? ist das eine aufgabe für die schule, interessierte es dich privat oder brauchst du nur ein programm dass das kann?


----------



## DasNooB (24. Sep 2008)

Es ist eine Projektaufgabe von der Schule,

Das Zeil welches wir verfolgen besteht darin, dass ich und ein Kolege ein komplettes mySQL Administrations Programm Schreiben, und im moment sind wir an dem punkt, das wir den ActionListener ausprobieren wie er funktioniert und wie wir die abgefragten mySQL daten so in die Grafischeoberfläche einbinden können, das wir die Daten auch später ändern können, mySQL an sich ist kein problem, jedoch das ganze mit Java. 
Ich probiere erstmal über JTabbedPane, jedoch steige ich da durch die ganzen befehle noch nich durch aber das kommt schon (hoffe ich) [wir haben noch 3 Tage Zeit]

glg Kevin


----------



## HoaX (24. Sep 2008)

in 3 tagen wird es schwer das hin zu bekommen bekommen ohne vorkenntnisse.
wofür willst du ne jtabbedpane?
zum anzeigen und editieren deiner daten brauchst du ein JTable
Editierbar bekommst du das ganze indem du ein eigenes TableModel für dein Datenmodell schreibst und bei isCellEditable entsprechend true zurück gibst und natürlich den wert passend in setValueAt übernimmst/speicherst


----------



## DasNooB (25. Sep 2008)

Vielen dank schonmal für die Hilfe, habe mal ein wenig gegooglet usw. und bin jetzt soweit, das ich auf die Datenbank zugreifen kann, ich kann alle daten schon in ein JTable schreiben.
Nun stehe ich jedoch vor einem neuen Problem... 
ich möchte mehrere Tabellen Auslesen können, ich habe jedoch noch nichts gefunden wie man aus einer mySQL datenbank die einzelnen Tabellen namen und die anzahl der Tabellen herausfindet. 
Wenn ich dies habe, steht dem fertigem programm so gut wie nichts mehr im wege, danke schonmal für die große hilfe =)
Würde mich sehr freuen wenn ihr mich auch bei diesem Problem unterstützen könntet.

glg Kevin


----------



## ARadauer (25. Sep 2008)

> ich möchte mehrere Tabellen Auslesen können, ich habe jedoch noch nichts gefunden wie man aus einer mySQL datenbank die einzelnen Tabellen namen und die anzahl der Tabellen herausfindet.




java.sql.Connection hat eine Methode getMetaData()

in den MetaDaten findest du diese informationen...


----------



## HoaX (25. Sep 2008)

MetaData heißt das zauberwort, gibts bei google und hier genug dazu


----------



## ARadauer (25. Sep 2008)

9:06 vs 9:07, das war haarscharf ;-)


----------



## DasNooB (25. Sep 2008)

Dann werde ich mal schnell googlen =)
aber kann man die matedaten nich nur auslesen wenn man schon eine verbindung zu einer bestimmten tabelle hat?
also so habe ich es im moment jedenfalls, sry wenn ich dumme fragen stelle aber bin noch neu auf dem gebiet und wir sollten uns eine aufgabe aussuchen die uns "fordert" nur ohne hilfe werden wir das bis morgen nicht fertig bekommen =)

danke nochmal, ihr seit echt klasse ^^


----------

