# Arraylist



## kanial (31. Januar 2008)

Hallo

ich habe eine Class name Datenbank,dass die Daten  rausholt.



package tt;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.*;
import java.util.ArrayList;

public class Datenbank {



public static void main( String[] argv )
 {

 Connection conn = null;
String sDbUrl=null; 
String user = "";
	String pass = "";






ArrayList<String> list=new ArrayList<String>();
	try {
		Class.forName("com.mysql.jdbc.Driver");
		System.out.println( "bitte auswählen" );

	 BufferedReader in = new BufferedReader(
             new InputStreamReader( System.in ) );

     sDbUrl = in.readLine(); 
    conn = DriverManager.getConnection(sDbUrl,user, pass);

	PreparedStatement pStm = conn.prepareStatement("show Tables");
	ResultSet rs = pStm.executeQuery();

	 while (rs.next())
		{
		 list.add(rs.getString(1));
		}
	 System.out.println(list.size());
	 for( int i=0; i<list.size(); i++)
	 {	
		 System.out.println(list.get(i)+":");
		 pStm = conn.prepareStatement("show columns from " + list.get(i));
		 rs = pStm.executeQuery();
		 ResultSetMetaData rsmd = rs.getMetaData(); 
		 DatabaseMetaData meta = conn.getMetaData(); 
		ResultSet ergebniss= meta.getPrimaryKeys(null,null,list.get(i));
		 ResultSet ergebniss1= meta.getImportedKeys(null,null,list.get(i));  
		while (ergebniss.next())
		{
			System.out.println("Primary:" + ergebniss.getString("COLUMN_NAME"));
		 while (ergebniss1.next()){
			 System.out.println("Foreign:" + ergebniss1.getString("FKCOLUMN_NAME"));
		 }
		}
			 while (rs.next())
			{
			for (int j = 1; j <= rsmd.getColumnCount(); j++) 
			 {

			 System.out.println(rs.getString(j));
			 }
	 	}




	}
	}
catch (Exception e) {
	System.err.println("Kann nicht verbinden!"); 
	}
	finally {
	if (conn != null) {
	try {

	conn.close();

	System.out.println("Verbindung beendet."); 

	} catch(Exception e) { 
	}
	}
	}

 }
}




jetzt möchte ich in eine andere Klasse list.size();  benutzen damit ich die anzahl von tabellen habe und davon objekte erzeugen.


wie rufe ich arraylist auf.


----------



## Matze (31. Januar 2008)

Wenn du die Code-Tags verwendest, dann helf ich dir!


----------



## zerix (31. Januar 2008)

Hallo,

wie Matze schon gesagt hat, benutze das nächste mal bitte die code-Tags (#-Symbol in der Toolbar).

Vielleicht solltest du dir erstmal die Grundlagen der Java-Programmierung anschauen. Wie man Objecte anlegt usw.

http://www.galileocomputing.de/openbook/javainsel7/ 


MFG

zEriX


----------



## kanial (31. Januar 2008)

Hallo

ich habe eine Class name Datenbank,dass die Daten  rausholt.




```
package tt;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.*;
import java.util.ArrayList;

public class Datenbank {
	
	public static void main( String[] argv )
 {

 Connection conn = null;
String sDbUrl=null; 
String user = "";
	String pass = "";

		
	ArrayList<String> list=new ArrayList<String>();
	try {
		Class.forName("com.mysql.jdbc.Driver");
		System.out.println( "bitte auswählen" );
		
	 BufferedReader in = new BufferedReader(
             new InputStreamReader( System.in ) );
	 
     sDbUrl = in.readLine(); 
    conn = DriverManager.getConnection(sDbUrl,user, pass);
   
	PreparedStatement pStm = conn.prepareStatement("show Tables");
	ResultSet rs = pStm.executeQuery();

	 while (rs.next())
		{
		 list.add(rs.getString(1));
		}
	 System.out.println(list.size());
	 for( int i=0; i<list.size(); i++)
	 {	
		 System.out.println(list.get(i)+":");
		 pStm = conn.prepareStatement("show columns from " + list.get(i));
		 rs = pStm.executeQuery();
		 ResultSetMetaData rsmd = rs.getMetaData(); 
		 DatabaseMetaData meta = conn.getMetaData(); 
		ResultSet ergebniss= meta.getPrimaryKeys(null,null,list.get(i));
		 ResultSet ergebniss1= meta.getImportedKeys(null,null,list.get(i));  
		while (ergebniss.next())
		{
			System.out.println("Primary:" + ergebniss.getString("COLUMN_NAME"));
		 while (ergebniss1.next()){
			 System.out.println("Foreign:" + ergebniss1.getString("FKCOLUMN_NAME"));
		 }
		}
			 while (rs.next())
			{
			for (int j = 1; j <= rsmd.getColumnCount(); j++) 
			 {
				
			 System.out.println(rs.getString(j));
			 }
	 	}
			
	 
	}
	}
catch (Exception e) {
	System.err.println("Kann nicht verbinden!"); 
	}
	finally {
	if (conn != null) {
	try {
		
	conn.close();

	System.out.println("Verbindung beendet."); 

	} catch(Exception e) { 
	}
	}
	}
	
 }
}
```
 

jetzt möchte ich in eine andere Klasse list.size();  benutzen damit ich die anzahl von tabellen habe und davon objekte erzeugen.


wie rufe ich arraylist auf.


----------



## Matze (31. Januar 2008)

Ok. So wird das nicht funktionieren, da deine ArrayList nur in der Main-Methode existiert, du müsstest sie in der Klasse anlegen.

Ich muss zerix Recht geben, da man eigentlich die Main-Methode nur zum starten des Programms verwendet.

Und um von einer anderen Klasse auf ein Objekt einer anderen zugreifen zu können, benutzt man getter- und setter-Methoden.

Lese das erstmal nach, da das Grundlagen sind und wir sind nicht da um dir eine Schritt für Schritt Anleitung zu geben.


----------



## kanial (31. Januar 2008)

Danke für schnelle Antwort.


----------

