# Access - Alle Tabellennamen ausgeben.



## Kai008 (8. Februar 2009)

Habe gesucht aber nichts funktionierendes gefunden.
U. A. wären da

```
SELECT * FROM INFORMATION_SCHEMA.TABLES
SELECT name FROM dbo.sysobjects WHERE Type = 'U'
SHOW TABLES FROM dbFile
```

Alles schmeißt mir aber eine Exception. Ich denke der Fehler liegt in meinen Source, da berall wo ich beim googlen lande immer nur diese Befehle stehen.

Mein Code lautet folgender Maßen:



```
public void accessSubmitPressed()
{
	File selectedFile = this.accessFileChooser.getSelectedFile();
	
	if(selectedFile == null)
	{
		ShowError.run(0, ShowError.WARNING_MESSAGE);
		return;
	}
	
	Connection dbCon = ConnectToAccess.run(selectedFile, "", "");

	if(dbCon == null)
		return;
	
	this.unInstallComponents();
	this.setVisible(false);
	
	new accessAdmin.Window(selectedFile, dbCon);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public static final Connection run(File filename, String username, String passwort)
{
	if(!filename.exists())
	{
		ShowError.run(2, ShowError.ERROR_MESSAGE);
		return(null);
	}		

	Connection con = null;
	try
	{
		con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + filename.getAbsolutePath(), username, passwort);
	}
	catch(Throwable e)
	{
		ShowError.run(3, ShowError.ERROR_MESSAGE);
		return(null);
	}
	return(con);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package accessAdmin;

import java.io.File;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.JFrame;

import core.ShowError;

public class Window extends JFrame
{
	private static final long serialVersionUID = 1L;

	private Connection dbCon;
	
	public Window(File dbFile, Connection dbCon)
	{
		super();
		
		this.dbCon = dbCon;

		ResultSet resultSet = this.startStatement("SELECT * FROM " + dbFile.getAbsoluteFile() + ".INFORMATION_SCHEMA.TABLES");
		//this.nextRow(resultSet);
	}
	private final ResultSet startStatement(String statement)
	{
		ResultSet resultSet = null;
		
		try
		{
			resultSet = this.dbCon.createStatement().executeQuery(statement);
		}
		catch(SQLException e)
		{
			e.printStackTrace();
			ShowError.run(1, ShowError.ERROR_MESSAGE);
			System.exit(0);
		}
		return(resultSet);
	}
	private final void nextRow(ResultSet resultSet)
	{
		try
		{
			resultSet.next();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}
```

Bitte sagt mir wo der Fehler liegt.


----------



## procurve (8. Februar 2009)

Es wäre hilfreich, wenn du noch angeben könntest, was für eine Exception fliegt und in welcher Zeile sie auftritt.


----------



## Kai008 (8. Februar 2009)

Ups, sorry.
U. a. "java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Datei 'D:\Eclipse\Workspace\DBAdmin\db.mdb.INFORMATION_SCHEMA' nicht gefunden.", und "java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntaxfehler in FROM-Klausel."

Alles immer in Window.startStatement()


----------



## procurve (8. Februar 2009)

Dann liegt es laut der Fehlermeldung nicht an deinem Programm, sondern an der SQL-Anweisung. Gibt es die Tabelle INFORMATION_SCHEME.TABLES wirklich in der Access-Datenbank?


----------



## Kai008 (9. Februar 2009)

Keine Ahnung. Weil alle sagen man bekommt dadurch die Tabellen dachte ich, das ist so ein System-Internes Ding.


----------



## zeja (16. Februar 2009)

Mit was für einem Access arbeitest du eigentlich? Nicht alle Datenbanken verhalten sich gleich.

Der Standardweg um alle Tabelle aus irgendeiner Datenbank zu bekommen ist sich von der Connection die MetaData geben zu lassen und darauf die Tabellen abzufragen.


----------

