Access - Alle Tabellennamen ausgeben.

Kai008

Erfahrenes Mitglied
Habe gesucht aber nichts funktionierendes gefunden.
U. A. wären da
Code:
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:


Java:
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.
 
Es wäre hilfreich, wenn du noch angeben könntest, was für eine Exception fliegt und in welcher Zeile sie auftritt.
 
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()
 
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?
 
Keine Ahnung. Weil alle sagen man bekommt dadurch die Tabellen dachte ich, das ist so ein System-Internes Ding.
 
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.
 
Zurück