In Access-Datenbank schreiben

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Funktioniert irgendwie nicht.

Könnt ihr mir sagen wo der Fehler steckt ?
Es wird nämlich gar nichts in die DB geschrieben. Es gibt aber auch keinen Fehler.

Code:
import java.io.*;
import java.net.*;
import java.sql.*;
import java.util.*;

public class zeit {
    
    public void storeQuote() {
        String datasource = "jdbc:odbc:Zeit";
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection conn = DriverManager.getConnection(datasource, "", "");
            PreparedStatement pstmt = conn.prepareStatement(
             "INSERT INTO Stocks VALUES(?, ?, ?, ?, ?)");
            pstmt.setString(1, "1");
            pstmt.setString(2, "'04.06.04'");
            pstmt.setString(3, "'07:30'");
            pstmt.setString(3, "'16:30'"); 
            pstmt.setString(3, "'7:45'"); 
            pstmt.executeUpdate();
            conn.close();
        } catch (SQLException sqe) {
            System.out.println("SQL Error: " + sqe.getMessage());
        } catch (ClassNotFoundException cnfe) {
            System.out.println(cnfe.getMessage());
        }
    }
    public static void main(String[] arguments) {
        zeit qd = new zeit();
   
    }
}
 

DP

Top Contributor
du musst einen commit abschicken oder im odbc-treiber den autocommit aktivieren. cu
 
G

Guest

Gast
Hallo!

Ich habe das gleiche Problem (ebenfalls ODBC mit Access-Datenbank). Beim einmaligen Inserten passiert nichts (autoCommit ist true und explizites commit bzw. closen der Connection bringen auch nichts). Erst wenn ich gleich darauf ein zweites mal ein insert mache, wird der erste Datensatz eingefügt.

Was kann ich denn da falsch gemacht haben? der return-parameter von executeUpdate() ist 1. D.h. ein Datensatz wurde geändert. Das würde ja auch noch passen.
 

DP

Top Contributor
mach doch mal dein update und schliesse das access und starte es wieder. evtl. ist die aktualiserung von eckes nur buggy...
 

Espiritu

Mitglied
Hab ich schon probiert, aber der Datensatz ist wirklich nicht drinnen.

Bin jetzt noch auf folgendes draufgekommen: die Methode executeUpdate (vom PreparedStatement) liefert 1 zurück; aber wenn ichs mit execute probiere, wird false zurückgegeben.

Das würde dann ja heißen, dass meine Query nicht stimmt, oder?
[edit] OK, sorry, bei ddl-statements wird ja kein ResultSet zurückgeliefert, ergo ist auch der Rückgabetyp von execute false. [/edit]

Hier jedenfalls mal der Code (ist schon ein bisserl unübersichtlich)
Code:
public boolean updateQuery(String query, Object... params)
{
    int rs = -1;
    boolean b = false;
//    PreparedStatement stmt = null;
    Statement stmt = null;
		
    Connection con = null;
    try
    {
        Class.forName(DbConnection.DRIVER_MS);
    }
    catch (ClassNotFoundException e)
    {
        System.err.println("Fehler beim Laden der Datenbanktreiber!");
        e.printStackTrace();
        System.err.println("=======================================");
        return false;
    }

    String url = DbConnection.DB_URL_MS + DbConnection.DB_NAME;
    try
    {
        con = DriverManager.getConnection(url, "", "");
    }
    catch (SQLException e)
    {
        System.err.println("Fehler beim Datenbank-Verbindungsaufbau!");
        e.printStackTrace();
        System.err.println("========================================");
    }
		
    try
    {
//    stmt = con.prepareStatement(query);
        stmt = con.createStatement();
        System.out.println(con.getAutoCommit());
			
        int index = 1;
        for (Object obj : params)
        {
//            this.setParam(index, obj);
            index++;
        }
        System.out.println(query);
        b = stmt.execute(query);
//        rs = stmt.executeUpdate();
        con.commit();
        con.close();
    }
    catch (SQLException e)
    {
        System.err.println("Fehler beim Ausführen der Query!");
        e.printStackTrace();
        System.err.println("================================");
        return false;
    }
		
    return b;
//    return rs;
}

Aufruf:
Code:
    String query =
        "insert into Test(bla,hui,super) values ('a',1,'b')";
		
    System.out.println(wrapper.updateQuery(query, "a",1,"b"));
    /*
    query =
        "insert into Test(bla,hui,super) values ('b',1,'a')";
    System.out.println(wrapper.updateQuery(query, "b",1,"a"));
    */

Die Tabelle Test hat eben die Attribute bla varchar(50), hui integer, super varchar(50)
also müsste das auch so passen... ich steh voll daneben

Mit einem "normalen" Statement funktioniert's übrigens auch nicht...

[edit]
Hab jetzt rausgefunden wie es geht: ich muss die Connection closen UND access neu starten.
Aber das is ja blöd, ich will ja nicht für jede Query eine neue Verbindung auf- und wieder abbauen...
Hat da jemand eine Idee?
[/edit]
 

nollario

Bekanntes Mitglied
eins ist klar: die lösung liegt nicht innerhalb von java... da ist access das problem. die änderungen werden wohl erst durch schliessen der connection commited.

wenns irgendwie geht - nutzt eine vernünftige db (mysql, sapdb, cloudscape, ...)
 

Espiritu

Mitglied
Naja, committed wird immer "eins im nachhinein" Wenn ich zwei inserts durchführe (mit einer Connection), wird nur das erste in die DB geschrieben. Beim dritten insert, wird das zweite insert committed, etc.

MySQL ist sicher ne bessere Alternative; das Problem ist aber, dass mein Tool DBMS-unabhängig sein soll, also auf Access, MySQL, Oracle, etc. laufen soll.

Danke jedenfalls für eure Hilfe
 

DP

Top Contributor
so rdbms-unabhängig kannste dein tool garnicht machen... fängt schon bei den treibern an und hört bei der syntax auf...
 

Espiritu

Mitglied
Treiber is klar; die muss ich dann der DB entsprechend laden...
Wegen Syntax: Naja, is ein bisserl umständlich, aber ich werd mich an den sql-92 standard halten, also nur "primitive" datentypen und ddl- und dml-queries. Dann hoff ich, dass das dann einigermaßen hinhaut.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
MaxG. Access Datenbank Datenbankprogrammierung 48
I Access Datenbank in Table einlesen lassen Datenbankprogrammierung 2
Z Finde den Fehler: Daten aus einer Access-Datenbank lesen Datenbankprogrammierung 12
S HSQLDB Zugriff auf Access Datenbank Datenbankprogrammierung 0
V Datenbank Access einbinden Datenbankprogrammierung 11
A Verbindung mit Access 2007 Datenbank herstellen Datenbankprogrammierung 1
J Verbindung zu Access Datenbank Datenbankprogrammierung 15
J Access Datenbank mit JAVA erstellen - boolean Werte Datenbankprogrammierung 4
E Access Datenbank, Linux Umgebung Datenbankprogrammierung 4
E Access Datenbank mit Insert befüllen Datenbankprogrammierung 5
K MySQL JDBC - Access Datenbank - unbekannter TabellenName Datenbankprogrammierung 4
K Access Datenbank mit Java auf win7 64bit Datenbankprogrammierung 14
F Zugriff auf MS Access-Datenbank mit jackcess Datenbankprogrammierung 10
P Access Datenbank durchsuchen Datenbankprogrammierung 8
B MAC Access Datenbank in Java verwenden - Treiberproblem Datenbankprogrammierung 2
NoXiD Access Datenbank in java einbinden ohne ODBC treiber zu erstellen Datenbankprogrammierung 5
T Problem bei Zugriff auf Access Datenbank Datenbankprogrammierung 7
Q Access Datenbank in eine Internetseite einbinden Datenbankprogrammierung 2
M Zugriff auf eine Access-Datenbank innerhalb eines jar-Files Datenbankprogrammierung 7
J Zugriff auf Access-Datenbank Datenbankprogrammierung 3
D Access Datenbank in .jar-Datei Datenbankprogrammierung 51
M Access Datenbank ! Datenbankprogrammierung 5
B Platzierung einer Access Datenbank Datenbankprogrammierung 4
D An Access Datenbank andocken ohne sie beim System anzumelden Datenbankprogrammierung 3
D String[][] Array in Access Datenbank speichern Datenbankprogrammierung 5
B JDBC Verbindung zu Access Datenbank Datenbankprogrammierung 6
T Access-Datenbank unter Mac OS X Datenbankprogrammierung 14
J Verbindung zur Datenbank MS Access Datenbankprogrammierung 4
O Access Datenbank mit Java bedienen Datenbankprogrammierung 2
A Problme mit Access als Datenbank Datenbankprogrammierung 3
D Access-Datenbank unter Java verwenden Datenbankprogrammierung 7
K Zugriff auf Access-Datenbank Datenbankprogrammierung 4
Tom#234 Jakarta Web Service SQL Access Error Datenbankprogrammierung 7
H Datenbankverbindung zu MS Access Datenbankprogrammierung 4
G Connect zu ACCESS-DB mit Ucanaccess Datenbankprogrammierung 11
V keine Verbindung möglich (Access-DB) Datenbankprogrammierung 3
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
Z [JDBC][MYSQL] Access denied Datenbankprogrammierung 7
J Unterschied @Id und @Access? Datenbankprogrammierung 5
D UCanAccess / MS Access - Tabelle / Spalte vorhanden Datenbankprogrammierung 3
J Java 8 und Microsoft Access Database-Dateien(mdb) Datenbankprogrammierung 1
W Access DB Metainfo hinzufügen Datenbankprogrammierung 8
Neumi5694 MS Access Sicherheit entfernen Datenbankprogrammierung 0
F Brauche dringend Hilfe Java-Access Connection Datenbankprogrammierung 3
L mdb (access) ansteuern: Welcher weg ist der Beste Datenbankprogrammierung 3
D Java MS Access Verbindung Datenbankprogrammierung 10
Neumi5694 MS Access Tabellenbesitzer ändern Datenbankprogrammierung 0
Neumi5694 Java + MS Access + 64 Bit = Fehler -1073740777 Datenbankprogrammierung 2
R MS-Access mit JAva auslesen Datenbankprogrammierung 7
Gossi MySQL Access denied Datenbankprogrammierung 11
M Datenbankverbindung Access Datenbankprogrammierung 3
F Insert into Access Datenbankprogrammierung 3
C Access Datenbankprogrammierung 2
T Access 32bit on Win7 64Bit ODBC Problem Datenbankprogrammierung 1
H Microsoft Access Treiber wird nicht gefunden Datenbankprogrammierung 9
T Datenbankverbindung access funtioniert nicht Datenbankprogrammierung 21
M Access Update Statement Fehler update -> unmöglich? Datenbankprogrammierung 3
M Access Abfrage mit Parameter & Access/Java liefern unterschiedliche Ergebnisse Datenbankprogrammierung 2
M Access Datensatz beinhaltet ESC-Zeichen Datenbankprogrammierung 3
S Access 2007 zugreifen- ODBC Driver Manger Datenbankprogrammierung 3
R MS Access mit Java Problem mit Update Statment Datenbankprogrammierung 13
M Problem mit Hibernate und Access Datenbankprogrammierung 9
S Datenbankapplikation von Access -> Java Datenbankprogrammierung 18
J mit java in access DB über odbc/jdbc Datenbankprogrammierung 2
C MS Access und Jarkarta POI Datenbankprogrammierung 4
E [ACCESS ODBC] INSERT INTO Fehler Datenbankprogrammierung 4
H java.sql.SQLException: Access denied for user 'root'@'localhost' (using password : YES) Datenbankprogrammierung 1
N Wie kann ich Zugriff auf eine MS Access DB (mit JDBC) über Netzwerk erreichen? Datenbankprogrammierung 7
M Spaltennamen einer MS Access Tabelle ermitteln Datenbankprogrammierung 3
F Zugriff auf MS Access DB Datenbankprogrammierung 3
T Problem beim Update in die Access DB Datenbankprogrammierung 9
M Tabelle in Access Datei mit JDBC generieren Datenbankprogrammierung 3
C MySQL langsamer als MS ACCESS Datenbankprogrammierung 5
S Connection String MS Access mit Systemdatenbank / Arbeitsgruppeninformationsdatei Datenbankprogrammierung 4
X JDBC und MS-Access Sicherheitslücken? Datenbankprogrammierung 4
N mehrere Abfragen nacheinander wie mit MS Access mit JAVA Datenbankprogrammierung 3
G "Adapter" Access -> MySQL? Datenbankprogrammierung 6
J Java DB Zugriff auf Access (Migration auf andere DB) Datenbankprogrammierung 8
H Fehler mit ". Microsoft Access Driver" Datenbankprogrammierung 12
K Java JDBC Access Datenstruktur Datenbankprogrammierung 2
V Überprüfen ob Tabelle existiert in Access per ODBC Datenbankprogrammierung 2
S Access vom Programm aus starten Datenbankprogrammierung 8
V Tabelle kopieren (Superbase -> Access) Datenbankprogrammierung 1
G Java und Access? Datenbankprogrammierung 3
D Problem mit Access abfrage Datenbankprogrammierung 10
J Insert auf Access DB funktioniert nicht Datenbankprogrammierung 5
E Wie auf MS-Access DB zugreifen? Datenbankprogrammierung 8
M Hilfe -Access mag sein Replace nciht merh Datenbankprogrammierung 2
alexpetri Problem mit jdbc MS Access / nach 670 inserts ist schluss. Datenbankprogrammierung 4
U MS Access reservierte Wörter Datenbankprogrammierung 2
S Fehler bei DB Verbindung Access Datenbankprogrammierung 6
V MS Access DB - Schreibschutz deaktivieren Datenbankprogrammierung 3
S PreparedStatements, Abfrageoptimierung unter MS Access Datenbankprogrammierung 5
S Java Access Arbeitsgruppendatei Datenbankprogrammierung 2
S Zugriff auf eine große Datenmenge von MS Access per JDBC Datenbankprogrammierung 11
S Access und Java, aber wie? Datenbankprogrammierung 4
N Hilfe ! Mein Applet bekommt ein Access-Denied von MySQL Datenbankprogrammierung 7
G Doppeleinträge in Access auf anderem Weg verhindern. Datenbankprogrammierung 4
T Zugriff auf MS-Access-DB ist grottenlangsam. Normal? Datenbankprogrammierung 9

Ähnliche Java Themen

Neue Themen


Oben