ODBC Insert und gleich danach Selects

goetzi

Mitglied
Hallo Froum,

mich plagt folgendes Problem:
Ich mache über ODBC in eine Access Datenbank einen Insert. Im Anschluss aktuallisiere ich eine jTable mit den neuen Inhalten der Datenbanktabelle. Diese Aktuallisierung der jTable erfolgt direkt im Anschluß an den Insert. Allerdings wird unter diesen Umständen der neu hinzugekommene Datensatz nicht angezeigt.

Baue ich jedoch eine Zeitschleife zwischen Insert und Aktuallisierung (select) der jTable ein, wird der neue Wert angezeigt. Ich denke mal dass es eine Zeit braucht bis das Insert Statement über ODBC die Daten in die Access Datenbank geschrieben hat. Kann ich dies irgendwie abfragen wann das Insert Statement über ODBC fertig ist um erst dann mit der Programmausführung weiter zu machen ?
 

Antoras

Top Contributor
Ich würde für beide Statements an die DB je eine Methode erstellen. Dann musst nur die Insert- und danach die Select-Methode aufrufen. Das ist übersichtlicher und funktioniert dann mit Sicherheit korrekt.

EDIT: Sonst zeig mal deinen Code. Ich kann mir nicht vorstellen, dass die DB da zu langsam ist. Ist das eine lokale DB oder liegt die auf einem Server?
 
Zuletzt bearbeitet:

goetzi

Mitglied
Die Datenbank liegt lokal. Ist die Sleep Anweisung in der Main Klasse aktiv, dann funktioniert alles tadellos. Ist sleep inaktiv, dann wird in die Tabelle test kein Datensatz eingefügt.

Main
Java:
package dbtest;
import java.sql.*;

public class Main {

    
    public static void main(String[] args) {
                ODBCInsert lw = new ODBCInsert();
		String abfrage = "insert into test (name,name2) values ('22','33')";
		
                try{
                lw.query(abfrage);
                //Thread.sleep(1000);		
                }catch (Exception e){System.out.println(e.getMessage());}
    
    
    
    
                ODBCSelect lw2 = new ODBCSelect();
		String abfrage2 = "select name from test";
		
                try{
                ResultSet res = lw2.query(abfrage2);
                		while (res.next()) {
                                    String name = res.getString("name");
                                    System.out.println("Ausgabe: " + name);
                                }
                }catch(Exception e){System.out.println(e.getMessage());}
    }
  
}



ODBCInsert
Java:
package dbtest;
import java.sql.*;

public class ODBCInsert {

	ODBCInsert(){
		
	}
	
    void query(String params) throws SQLException {
    
        // Laden des Treibers per Klassen-Loader
		try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (ClassNotFoundException e) {
            System.out.println("Kann den Treiber nicht laden!");
        }

        // Verbindungs-Objekt erzeugen und konfigurieren
        Connection con = null;

        String db = "jdbc:odbc:" + "odbcname";
        

        try {
            con = DriverManager.getConnection(db);
        } catch (SQLException e) {
            System.out.println("Verbindung fehlgeschlagen! " + e.getMessage());
        }

        Statement state = null;

        try {
            state = con.createStatement();
        } catch (SQLException e) {
            System.out.println("Konnte kein Statement erzeugen");
        }
          
          state.executeUpdate(params);
        
    }
}




ODBCSelect
Java:
package dbtest;
import java.sql.*;

public class ODBCSelect {

	ODBCSelect(){
		
	}
	
    ResultSet query(String params)  {
    
        
		try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (ClassNotFoundException e) {
            System.out.println("Kann den Treiber nicht laden!");
        }

        
        Connection con = null;

        String db = "jdbc:odbc:" + "odbcname";
        

        try {
            con = DriverManager.getConnection(db);
        } catch (SQLException e) {
            System.out.println("Verbindung fehlgeschlagen! " + e.getMessage());
        }

        Statement state = null;

        try {
            state = con.createStatement();
        } catch (SQLException e) {
            System.out.println("Konnte kein Statement erzeugen");
        }
        
        
        ResultSet res = null;
           try{
           res = state.executeQuery(params);
           }catch(Exception e){}
        return  res;
    }
}
 
M

maki

Gast
Die JDBC-ODBC Brücke ist schrott und sollte nie Produktiv verwendet werden, war nie mehr als eine Demo als es noch keine "richtigen" JDBC Treiber gab.
 

goetzi

Mitglied
Ich finde leider kein Beispiel unter Verwendung eines direkten JDBC MS Access Treibers. Alle Beispiele die ich bei google gefunden habe sind über die JDBC/ODBC Bridge realisiert.

Kann mir von euch noch jemand ein Tipp geben ?
 

Antoras

Top Contributor
Für MS Access gibt es keinen direkten JDBC-Driver. Also entweder musst du mit der ODBC-Bridge leben, oder du steigst auf ein anderes DBMS um, was ich dir empfehlen würde. Da wäre z.B H2. Das ist ein super embedded DBMS, also ohne dämlichen Installationszwang und komplett in Java geschrieben.
 

goetzi

Mitglied
Vielen Dank, H2 hört sich gut an. Mit den jetzigen Phänomenen von der JDBC-ODBC Bridge kann ich leider nicht leben.

Danke EUCH !!
 

goetzi

Mitglied
Ich hab mich mit dem Thema H2 und Derby befasst. Leider bieten diese in der embedded Version nicht die Möglichkeit von mehreren Instanzen bzw. Clients auf das DB File zuzugreifen.

Grundsätzlich würde ich gerne das DB File auf einer Netzfreigabe liegen lassen und die Clients könnten über den embedded Mode unabhängig zugreifen. Was ich nicht will, ist dass zuerst eine Datenbank auf einem zentarlen System installiert werden muss.

Access über ODBC hätte sich da angeboten, hat allerdings die oben erwähnten Nachteile.

Könnt Ihr mir eine JAVA DB nennen, welche dies bietet ?
 

Antoras

Top Contributor
Bei H2 gibt es schon die Möglichkeit das DBMS im Server-Modus zu starten, die Frage ist nur ob das viel Sinn macht, da die DB ja immer online sein müsste um als Server zu fungieren. Ansonsten hast du das Problem, dass die Clients sich nicht mehr verbinden könnten. Und wenn du die Daten untereinander synchronisierst um immer auf selbige zurückgreifen zu können, dann weist du nie wer gerade Server spielt und läufst Gefahr "Informationsinseln" entstehen zu lassen.
Aber wie gesagt, H2 kann in einem Server-Modus laufen, ob es bei Derby auch geht weiß ich nicht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E [ACCESS ODBC] INSERT INTO Fehler Datenbankprogrammierung 4
D ODBC Zugriff auf MDB-Datenbank, Insert Into ohne Funktion Datenbankprogrammierung 2
S ODBC Treiber in Java Editor einbinden Datenbankprogrammierung 3
KaffeeFan JDBC/ODBC-Bridge entfernt Datenbankprogrammierung 4
W Keine ODBC-Verbindung zur MSAccess-Datenbank Datenbankprogrammierung 2
S sun.jdbc.odbc.JdbcOdbcDriver wird nicht gefunden Datenbankprogrammierung 2
thet1983 MySQL ODBC Driver zuweisen unter Mac OX Mav Datenbankprogrammierung 2
X MySQL DB-verbindung ohne JDBC/ODBC Datenbankprogrammierung 1
F sun.jdbc.odbc.jdbcodbcdriver wird nicht gefuden Datenbankprogrammierung 3
0 ODBC Bezeichner zu lang HILF Datenbankprogrammierung 6
T Access 32bit on Win7 64Bit ODBC Problem Datenbankprogrammierung 1
S ODBC Treiber Problem/oder unvermögen Datenbankprogrammierung 18
Y java.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid cursor state Datenbankprogrammierung 2
M Zugriff auf mdb via ODBC steuern Datenbankprogrammierung 2
S Access 2007 zugreifen- ODBC Driver Manger Datenbankprogrammierung 3
R ODBC-Treiber sehr langsam Datenbankprogrammierung 5
J mit java in access DB über odbc/jdbc Datenbankprogrammierung 2
NoXiD Access Datenbank in java einbinden ohne ODBC treiber zu erstellen Datenbankprogrammierung 5
T ODBC + MySQL + Umlaute => Katastrophe Datenbankprogrammierung 4
J Datenquellen (ODBC) Vista(64) Datenbankprogrammierung 3
A Ich dreh durch mit JDBC & ODBC! Datenbankprogrammierung 26
M JDBC/ODBC Treiber-Einbindung Datenbankprogrammierung 5
O JDBC:ODBC Problem Remedy ARS Datenbankprogrammierung 8
A JavaDB(Derby) als ODBC-Datenquelle eintragen Datenbankprogrammierung 4
D sun.jdbc.odbc.JdbcOdbcDriver Datenbankprogrammierung 13
V Überprüfen ob Tabelle existiert in Access per ODBC Datenbankprogrammierung 2
F JDBC -> ODBC -> DBF, MDX? Datenbankprogrammierung 7
S ODBC Registrierung? Datenbankprogrammierung 2
M jbcd : odbc Verbindung zu Accessdatei (*.mdb) Datenbankprogrammierung 9
S Kommerzieller JDBC-ODBC-Konnektor Datenbankprogrammierung 5
M Odbc und Fehler Datenbankprogrammierung 44
S Neues aus der JDBC-ODBC-Hölle Datenbankprogrammierung 3
P ODBC verbindung Java soll auf access mdb datei zugreifen Datenbankprogrammierung 2
G Access mit Java OHNE ODBC Datenbankprogrammierung 7
C Datenbankanbindung ohne ODBC JDBC Brücke Datenbankprogrammierung 5
N [Microsoft][ODBC Microsoft Access Driver]COUNT field incorre Datenbankprogrammierung 13
D Anforderungen für JDBC-ODBC Datenbankprogrammierung 6
B Hilfe! Problem bei Verbindung über JDBC/ODBC Datenbankprogrammierung 4
F JDBC:ODBC chinesische Zeichen aus Memofelder Datenbankprogrammierung 2
R wer kennt Sage - KHK ? ODBC funzt nicht ? Datenbankprogrammierung 9
F Zugriff auf ODBC-Datenbank übers Netzwerk Datenbankprogrammierung 6
R JDBC-ODBC: Alle ODBC-Datenquellen ermitteln? Datenbankprogrammierung 4
A Java und Accessdateien ohne ODBC? Datenbankprogrammierung 2
J Problem bei ODBC Verbindung mit Access Datenbankprogrammierung 4
B Möglichkeit an alle ODBC Namen zu kommen? Datenbankprogrammierung 4
V Access-Transaktion über jdbc:odbc Datenbankprogrammierung 4
M Andocken an eine odbc Schnittstelle Datenbankprogrammierung 3
G Mit JDBC-ODBC-Bridge auf entfernten Rechner zugreifen? Datenbankprogrammierung 2
C JDBC-ODBC Bridge Datenbankprogrammierung 1
T compiler fehler: should be mapped with insert="false" update="false" Datenbankprogrammierung 1
L SQL Datenbank INSERT INTO Datenbankprogrammierung 6
L SQL Datenbank Tabelle insert Datenbankprogrammierung 7
O HOW TO INSERT PRIMARY INTO ANOTHER TABLE AND USE IT AS FOREIGN KEY TO DISPLAY DATA IN A RELATIONSHIP Datenbankprogrammierung 3
G Eine Spalte in xampp als Typ array erstellen - ein array mit "insert" hinzufügen. Datenbankprogrammierung 3
C Problem with INSERT.............ON DUPLICATE KEY Datenbankprogrammierung 3
A MySQL Select und Insert in Java Datenbankprogrammierung 15
S PostgreSQL Bytea INSERT Datenbankprogrammierung 8
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
L INSERT INTO Befehl in Java Datenbankprogrammierung 8
L SQL-Statement INSERT INTO ON DUPLICATE KEY UPDATE funktioniert nicht Datenbankprogrammierung 5
D Insert Methode per Servlet Datenbankprogrammierung 2
D Insert Methode per Servlet Datenbankprogrammierung 0
D SQLite INSERT OR REPLACE INTO macht neuen Eintrag?! Datenbankprogrammierung 2
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
B JPA->fehler beim Insert in die Datenbank Datenbankprogrammierung 3
A Oracle insert Array in DB Datenbankprogrammierung 7
C MySQL JTable in JScrollPane nach insert aktualisieren Datenbankprogrammierung 3
X SQLite Erhalte bei Query INSERT INTO eine NullPointerException Datenbankprogrammierung 10
M JAVA Derby INSERT probleme Datenbankprogrammierung 12
Y MySQL Eclipselink Insert JSF Beispiel gesucht Datenbankprogrammierung 2
T MySQL MySQL - Insert into fügt zwei identische Datensätze ein Datenbankprogrammierung 2
M Derby/JavaDB Derby SQL Insert mit AUTO_INCREMENT, welche ID wurde vergeben? Datenbankprogrammierung 6
D HSQLDB INSERT INTO in einer For Schleife mit selber ID, machbar? Alternative? Datenbankprogrammierung 7
J SQL-Statement Meine insert befehle funktionieren nicht und ich weiß nicht wo der fehler liegt Datenbankprogrammierung 5
M INSERT-Problem = integrity constraint violation: foreign key no parent Datenbankprogrammierung 5
P MySQL INSERT / UPDATE MySQL - perStoredProcedure oder direkt im Code Datenbankprogrammierung 3
M MySQL Insert über mehrere Tabellen Datenbankprogrammierung 7
V HSQLDB Insert in eine Tabelle mit Autoincrement Datenbankprogrammierung 2
B MS SQL: Insert LOB Datenbankprogrammierung 4
M MySQL INSERT will einfach nicht funktionieren Datenbankprogrammierung 9
H HSQLDB insert .... values("test1",select test2 from foo) Datenbankprogrammierung 2
D JDBC insert mit select abfrage Datenbankprogrammierung 5
R vor/nach INSERT mysql-SETS absetzen Datenbankprogrammierung 2
C insert into mit between-Anweisung Datenbankprogrammierung 10
C Derby/JavaDB INSERT auf FOREIGN KEY schlägt fehl Datenbankprogrammierung 2
F Insert into Access Datenbankprogrammierung 3
S Nochmals: ID ermitteln nach Insert Datenbankprogrammierung 2
S ID Wert von Insert über jdbcTemplate.update Datenbankprogrammierung 3
O Viele Verbindungen-Exception bei insert Daten zur MySQL-Datenbank Datenbankprogrammierung 2
B SELECT ja - INSERT nein (MySQL) Datenbankprogrammierung 3
E Derby/JavaDB Keine Reaktion von "insert into" im ActionListener Datenbankprogrammierung 22
A Oracle Unbekannter Fehler bei insert Befehl Datenbankprogrammierung 3
T MySQL Db select * und Insert schlagen fehl Datenbankprogrammierung 2
Kenan89 Insert ohne Auswirkung Datenbankprogrammierung 7
B MySQL myBatis INSERT Datenbankprogrammierung 13
E Access Datenbank mit Insert befüllen Datenbankprogrammierung 5
M Datenbankverbindung zu langsam beim Insert? Datenbankprogrammierung 6
S 2 Tabellen zu einer zusammenführen, INSERT INTO Fehler Datenbankprogrammierung 5
L H2 Auto INC Primary Key & Insert Datenbankprogrammierung 8
R Derby/JavaDB Insert Statement Probleme Datenbankprogrammierung 14

Ähnliche Java Themen

Neue Themen


Oben