Einführung in den Zugriff auf Microsoft-Access-Datenbanken mit Java in Java im Rahmen der Lehre des Programmierens mit der Programmiersprache Java. [] (), Lektion, Seite 720379
https://www.purl.org/stefan_ram/pub/java_msaccess_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram

Java -Zugriff auf Microsoft ® Access

Es wird eine kleine Datenbank mit einer Tabelle "simple" mit drei Spalten und zwei Zeilen angelegt, die zu einer Person einen Namen und einen Saldo enthält und eine ODBC -Datenquelle "Simple" für diese Datenbank angelegt. (Die dafür notwendigen Kenntnisse über Microsoft ® Access  und Microsoft ® Windows  werden in dieser Lektion nicht gelehrt.)

jdbc:odbc:Simple/simple.tab
"id", "name",    "saldo",
"1", "Mueller", "12", 
"2", "Meyer", "14",

Für das folgende Programm ist es nur wichtig, daß die Datenquelle "Simple" und darin die Tabelle "simple" vorhanden ist. Der Inhalt der Tabelle könnte auch ein anderer sein.

Das Programm ist zunächst als Abfolge folgender Schritte organisiert:

(Nach einer Überarbeitung des Programms ist die folgende Beschreibung nicht mehr passend. Sie muß noch entsprechend überarbeitet werden.)

Bei Ausnahme oder Störungen wird die Abfolge abgebrochen, wobei durch das Programm dafür Sorge getragen wird, daß in jedem Fall genau die erfolgreich erlangten Ressourcen wieder freigegeben werden.

Ressource-Bedingung Genau die Ressourcen müssen bei Beendigung eines Vorganges (wenn sie nicht mehr benötigt werden) wieder freigegeben werden, die zuvor erfolgreich erlangt wurden.

Nur in der Methode "main" ist das Programm mit einem bestimmten Ausgabegerät (hier das Objekt "java.lang.System.out") fest verbunden. Dadurch, daß die anderen Methoden davon entkoppelt sind, können sie leicht in einer anderen Umgebung verwendet werden, in der das Objekt "java.lang.System.out" nicht für Mitteilungen an den Benutzer verwendet werden kann oder soll.

Main.java
public class Main 
{
final static String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; 
final static String source = "jdbc:odbc:Simple"; 
final static String table = "simple"; 
final static String query = "SELECT * FROM " + table; 
final static String eol =  
java.lang.System.getProperty( "line.separator" );
/** Startpunkt des Programms. */
public static void main( final java.lang.String[] args )
{ /*logging is needed to avoid a close exception 
from shadowing a previous exception. */ 
final java.util.ArrayList<java.lang.Throwable> log 
= new java.util.ArrayList<java.lang.Throwable>( 16 );
final java.lang.StringBuilder output 
= new java.lang.StringBuilder();
try 
{ java.lang.Class.forName( driver ); // load driver 
appendToOutput( log, output ); }
catch( final java.sql.SQLException sQLException ) 
{ log.add( sQLException ); }
catch( final ClassNotFoundException classNotFoundException ) 
{ log.add( classNotFoundException ); }
if( output.length() > 0 ) 
java.lang.System.out.println( output );
if( log.size() > 0 ) 
java.lang.System.err.println( log ); }
private static void appendToOutput 
( final java.util.ArrayList<java.lang.Throwable> log
final java.lang.StringBuilder output
throws java.sql.SQLException
{ final java.sql.Connection conn = 
java.sql.DriverManager.getConnection( source );
try 
{ appendToOutput( log, output, conn ); }
finally // must never throw, to not shadow another exception 
{ try 
{ conn.close(); } 
catch( final java.lang.Exception exception ) 
{ log.add( exception ); }}}
private static void appendToOutput 
( final java.util.ArrayList<java.lang.Throwable> log, 
final java.lang.StringBuilder output, 
final java.sql.Connection conn
throws java.sql.SQLException
{ final java.sql.Statement statement = conn.createStatement();  
try 
{ if( statement.execute( query )) 
appendToOutput( log, output, statement ); }
finally 
{ try 
{ statement.close(); } 
catch( final java.lang.Exception exception ) 
{ log.add( exception ); }}}
private static void appendToOutput 
( final java.util.ArrayList<java.lang.Throwable> log, 
final java.lang.StringBuilder output, 
final java.sql.Statement statement )  
throws java.sql.SQLException
{ final java.sql.ResultSet results = statement.getResultSet();
if( results != null ) 
{ try 
{ appendToOutput( log, output, results ); }
finally 
{ try 
{ set.close(); } 
catch( final java.lang.Exception exception ) 
{ log.add( exception ); }}}}
private static void appendToOutput 
( final java.util.ArrayList<java.lang.Throwable> log, 
final java.lang.StringBuilder output, 
final java.sql.ResultSet results
throws java.sql.SQLException
{ final java.sql.ResultSetMetaData desc = results.getMetaData(); 
appendTitle( log, output, desc ); 
appendBody( log, output, desc, results ); }
private static void appendTitle 
( final java.util.ArrayList<java.lang.Throwable> log, 
final java.lang.StringBuilder output, 
final java.sql.ResultSetMetaData desc ) 
throws java.sql.SQLException
{ final int cols = desc.getColumnCount(); 
for( int i = 1; i <= cols; ++i ) 
output.append( desc.getColumnName( i )+ " " ); 
output.append( eol ); }
private static void appendBody 
( final java.util.ArrayList<java.lang.Throwable> log, 
final java.lang.StringBuilder output, 
final java.sql.ResultSetMetaData desc, 
final java.sql.ResultSet results )  
throws java.sql.SQLException
{ final int cols = desc.getColumnCount(); 
String text = "";
while( results.next() ) 
{ for( int i = 1; i <= cols; ++i ) 
output.append( set.getString( i )+ " " ); 
output.append( eol ); }}}

java.lang.System.out
id name    saldo 
1 Mueller 12 
2 Meyer 14

Durch die Unterteilung in einzelne Methoden ist das Geschehen übersichtlich: Jede einzelne Methode erledigt eine ganz bestimmte, überschaubare Aufgabe, und es kann anhand ihres Quelltextes leicht nachvollzogen werden, daß sie ihre Aufgaben so erfüllt, daß die oben genannte Ressourcen-Bedingung erfüllt ist. Durch die Wahl der Parameter können weiter hinten stehende Methoden auch in einer Schleife oder von Klienten aufgerufen werden, welche die nötigen Ressourcen selber schon haben: Ein Klient, der schon eine Datenbankverbindung hat, kann beispielsweise direkt die Methode für Verwendung bei vorhandener Datenbankverbindung aufrufen und die Methoden zur Erstellung der Verbindung ignorieren. Er kann diese Methode "thenCreateStatement" auch in einer Schleife aufrufen und dabei die bestehende Verbindung weiterverwenden.

Wenn das Programm so verändert wird, daß der Treiber, die Quelle, die Tabelle oder das Kommando nicht gefunden wird, indem diesen das Zeichen "0" vorangestellt wird, ergeben sich unter der vom Autor verwendeten Testumgebung jeweils charakteristische Fehlermeldungen. Diese Fehlermeldungen geben daher auch Hinweise, wo das Problem liegen könnte, wenn eine der Fehlermeldungen erscheint.

final static String driver = "0sun.jdbc.odbc.JdbcOdbcDriver";
java.lang.ClassNotFoundException: 0sun/jdbc/odbc/JdbcOdbcDriver

final static String source = "0jdbc:odbc:Simple";
java.sql.SQLException: No suitable driver

final static String table = "0simple";
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Das Microsoft Jet-Datenbankmodul findet die Eingangstabelle oder Abfrage '0simple' nicht. Stellen Sie sicher, dass sie existiert und der Name richtig eingegeben wurde.

final static String query = "0SELECT * FROM " + table;
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Unzulässige SQL-Anweisung; 'DELETE', 'INSERT', 'SELECT' oder 'UPDATE' erwartet.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram720379 stefan_ram:720379 source, source code,sourcecode, Programmier sprache java, Java Programm Java Programmiersprache Java Sprache Java Programmierung Programmieren in Java, Die Programmiersprache Java Javapgrammierung, Java-Programmierung, Java2, Java1.2, Java1.3, Java1.4, Java1.5, Java 2, Java 1.2, Java 1.3, Java 1.4, Java 1.5, Java 1.6, Java 1.7, Tiger, Dolphin, objektorientierte Programmierung, Java sun, , Softwareentwicklung, Software-Entwicklung, Software Entwicklung, Softwareprogrammierung, Software-Programmierung, Software Programmierung, Softwareherstellung, Software-Herstellung, Software Herstellung, Softwareerstellung, Software-Erstellung, Software Erstellung, Softwareengineering, Software-Engineering, Software Engineering, Softwareenginering, Software-Enginering, Software Enginering, Softwaremethodik, Software-Methodik, Software Methodik, Programmiermethodik, Programmier-Methodik, Programmier Methodik, Softwaredidaktik, Software-Didaktik, Software Didaktik, Methodik des Programmierens, Didaktik des Programmierens, Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens, Programmieren, Programmierung, Computer Science, Informatik, Informatik, Informationspädagogik, Informationspaedagogik, Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen, Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still, , Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd720379, slrprddef720379, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten.
https://www.purl.org/stefan_ram/pub/java_msaccess_de