JDBC Error "Too many Connections"

Selmau

Mitglied
Hallo Zusammen

Ich habe über JDBC eine Verbindung zu einer Datenbank aufgebaut und schreibe dort laufend Sachen hinein und lese diese aus. Das Problem ist nun aber, dass ich nach einer gewissen Zeit zu viele Verbindungen habe. Meine Idee war dann, dass ich die "Connection conn" mit conn.close wieder schliesse, nachdem ich die Dateien der Datenbank hinzugefügt habe. Jedoch erhalte ich dann beim nächsten senden den Fehler: "No operations allowed after Connection closing".

Hat Jemand von euch eine Idee, wie ich dies lösen kann, denn einfach die Anzahl Verbindungen erhöhen ist ja auch keine Lösung.

Hier noch mein Code:
Code:
public static Connection dbConnector ()
    {
    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        Connection conn=DriverManager.getConnection("jdbc:mysql://169.254.230.146/mealorder", "Benutzer", "Passwort");
    //    JOptionPane.showMessageDialog(null, "Connection sucessfull");
        return conn;
} catch (Exception e){
    //JOptionPane.showMessageDialog(null, e);
    return null;
}
}



Code:
public  void start_insert (){
     conn = sql_connection.dbConnector();
     if (conn==null){
         JOptionPane.showMessageDialog(null, "Verbindung zum Server nicht möglich! Bitte Server und WLan Verbindung überprüfen! ");}
         else{
         send_request();
         preparation_insert();
       
        }}



Code:
public  void insert_product_essen (int product_essen, int product_anzahl_e) {
       
       

    try {   
    //    Class.forName("com.mysql.jdbc.Driver").newInstance();
    //    Connection conn=DriverManager.getConnection("jdbc:mysql://192.168.43.13/mealorder", "'"+Home.user_database+"'", "Xjv58552");
        String query_essen = "Insert into Bestellungen_Essen_SNF (`Bestellnummer`, `Tisch`, `Produkt_E`, `Anzahl`, `ID`) values (?,?,?,?,?)";
        PreparedStatement pst_insert_essen=(PreparedStatement) conn.prepareStatement(query_essen);
       
        pst_insert_essen.setInt(1, Home.ordernummer_essen);    
        pst_insert_essen.setString(2, Home.tisch);
        pst_insert_essen.setInt(3, product_essen);    
        pst_insert_essen.setInt(4, product_anzahl_e);
        pst_insert_essen.setInt(5, Home.ID);
       
        pst_insert_essen.execute();
        //JOptionPane.showMessageDialog(null, "Bestellung abgeschickt");
       
        pst_insert_essen.close();
    }
    catch (Exception e){
       
        JOptionPane.showMessageDialog(null, "Fehler Hinzufügen Essen zu Datenbank");
    }
       
    }


Gruss

Samuel
 

VfL_Freak

Top Contributor
Moin,
es ist nicht nachzuvollziehen, wo Du was aufrufst ...
Meine Idee war dann, dass ich die "Connection conn" mit conn.close wieder schliesse, nachdem ich die Dateien der Datenbank hinzugefügt habe. Jedoch erhalte ich dann beim nächsten senden den Fehler: "No operations allowed after Connection closing".
Das ist ja auch logisch! Du solltest die Connection halt vor jedem Senden wieder öffnen (und danach sauber schließen) !

VG Klaus
 

Joose

Top Contributor
Die Lösung zu deinem Problem wurde dir ja schon genannt.

Eine Anmerkung zu deinem Code hätte ich aber -> verwende keine "_" für Namen (egal ob Methode, Klasse oder Variable)!
Verwende stattdessen die CamelCase Schreibweise :) https://de.wikipedia.org/wiki/Binnenmajuskel

Code:
public  void startInsert (){
....
         sendRequest();
         preparationInsert();
....      
}

Code:
public  void insertProductEssen(int productEssen, int productAnzahl) {
        // spar dir hier den postfix "essen" ... der Methodenname sagt ja schon was in die DB geschrieben wird.
        String query = "Insert into Bestellungen_Essen_SNF (`Bestellnummer`, `Tisch`, `Produkt_E`, `Anzahl`, `ID`) values (?,?,?,?,?)";
        PreparedStatement statement = (PreparedStatement) conn.prepareStatement(query);
      
        statement.setInt(1, Home.ordernummerEssen);   
        statement.setString(2, Home.tisch);
        statement.setInt(3, productEssen);   
        statement.setInt(4, productAnzahl);
        statement.setInt(5, Home.ID);
      
        statement.execute();
        statement.close();
    }
....
 

Selmau

Mitglied
Hallo Zusammen

Besten Dank für euro Tipps und Verbesserungsvorschläge. Ich habe das Problem mit den offenen Verbindungen nun gelöst, jedoch habe ich ab und zu immer noch einige Probleme, dass beim Schreiben bzw. Öffnen der Verbindung conn diese null bleibt. Probiert man dann nocheinmal, geht es meistens.

Ich glaube, dass das Problem ist, dass der Wamp server nicht für meine Anwendung ausgelegt ist, denn ich Schreibe die Daten von 5 verschiedenen Tablets auf einen Computer aufdem mein Wampserver installiert ist. Ich vermute, dass wenn zwei Geräte zum selben Zeitpunkt sich mit dem selben Benutzernamen beim Server anmelden wollen, kann der Server eine Anfrage nicht bearbeiten.

Hat jemand von euch eine Idee, ob dies das Problem ist oder wie man das Problem lösen kann?

Das mit der Verbindung einmal öffnen wollte ich zuerst auch machen, jedoch weiss ich nicht genau, wie man die Variable Connection conn für verschiedenen Klassen verwenden kann.

Besten Dank für eure Hilfe

Gruss Samuel
 

mrBrown

Super-Moderator
Mitarbeiter
Wamp meint XAMPP?

Vor den DB-Server einen normalen Webserver schalten, damit die DB nicht offen im Netz hängt (und am besten auch kein Wamp für Produktivsysteme nutzen) ;)
 

Selmau

Mitglied
Wäre also ein XAMPP Server besser, bzw würde der ein gleichzeitiges Anmelden von zwei Geräten zulassen? Vielleicht würde sich das Problem auch lösen, wenn sich jedes Gerät mit einem anderen Benutzer anmelden würde?

Wegen dem Webserver vorschalten kommt für mich nicht in Frage, da das System in sich geschlossen ist und kein Zugriff zum Internet hat.
 

Thallius

Top Contributor
Sorry aber deine Aussage zum webservice ist kompletter Blödsinn.

Ein Webservice ist die einzig richtige Lösung. Deine direkten Verbindungen zur Datenbank sind ein absolutes NoGO das niemals professionell irgendwo so gemacht würde. Und nur weil du nicht weist was ein Webservice ist und wie das funktioniert ist das noch lange kein Grund zu sagen das kommt nicht in frage...
 

Selmau

Mitglied
Ja ich muss zugeben, in Sachen Serverwissen bin ich ein echter Anfänger, kannst du mir also genau erklären, was du mit einem Webservice meinst? Kann ich so die JDBC Verbindung trotzdem verwenden oder muss ich dies mit php oder so realisieren? Leider hatte ich bis anhin noch nie in diesem Bereich etwas realisiert und dies ist für mich absolut Neuland.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
funfried JDBC-Connector GUI AWT, Swing, JavaFX & SWT 3
G JTable bei Insert in DB via jdbc aktualisieren AWT, Swing, JavaFX & SWT 9
S jdbc:odbc check connection AWT, Swing, JavaFX & SWT 2
foobar SWT-Button und Spring-JDBC AWT, Swing, JavaFX & SWT 2
M JDBC + dynamischer JTable - Spalten problem AWT, Swing, JavaFX & SWT 5
G Suche Tutorial zum Thema jdbc/SQL/Select/JTable AWT, Swing, JavaFX & SWT 9
M JavaFX java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found AWT, Swing, JavaFX & SWT 5
P Fehlermeldung: Error: Could not find or load main class set Caused by: java.lang.ClassNotFoundException: set AWT, Swing, JavaFX & SWT 5
E 3D-Grafik Java Fatal error bei LWJGL AWT, Swing, JavaFX & SWT 2
izoards [Fatal Error] org.xml.sax.SAXParseException AWT, Swing, JavaFX & SWT 10
M Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.controls not found AWT, Swing, JavaFX & SWT 14
M error: package javafx.scene.web is not visible import javafx.scene.web.*; AWT, Swing, JavaFX & SWT 16
J SWT SWT Error: No more handles AWT, Swing, JavaFX & SWT 3
zhermann JavaFX DialogPane.showAndWait wirft Cast Error AWT, Swing, JavaFX & SWT 1
I Fataler Error bei GUI-Ausführung AWT, Swing, JavaFX & SWT 3
E Swing Error icon in der TextArea AWT, Swing, JavaFX & SWT 1
U JavaFX Error: Handler Method not found AWT, Swing, JavaFX & SWT 3
N css und JavaFX error parse AWT, Swing, JavaFX & SWT 6
D JavaFX build.fxbuild error beim Erstellen einer exe AWT, Swing, JavaFX & SWT 2
L Rekursive Methoden -> Error: StackOverFlow AWT, Swing, JavaFX & SWT 2
A JavaFX Webapp Runtime error AWT, Swing, JavaFX & SWT 10
X JavaFX TableView Error beim clicken des außenbereiches AWT, Swing, JavaFX & SWT 5
A Swing Zahlenraten GUI wirft nur die Error Message aus AWT, Swing, JavaFX & SWT 6
A Java Swing Error AWT, Swing, JavaFX & SWT 3
Corben ActionListener Error AWT, Swing, JavaFX & SWT 2
E Laden von Bilddateien erzeugt OutOfMemory Error AWT, Swing, JavaFX & SWT 6
M JTree => Event Dispatching Error AWT, Swing, JavaFX & SWT 2
C SWT Error/Warnings in TreeView AWT, Swing, JavaFX & SWT 2
F Java heap space error trotz -Xmx512m AWT, Swing, JavaFX & SWT 9
G wirklich großer Text in JTextArea => Heap Space Error AWT, Swing, JavaFX & SWT 5
G Uncaught error fetching image + Ich checks nicht^^ AWT, Swing, JavaFX & SWT 6
V Lock & Feel für Error-Messages AWT, Swing, JavaFX & SWT 6
A error fetching image AWT, Swing, JavaFX & SWT 5
M Uncaught error fetching image AWT, Swing, JavaFX & SWT 2
N JList getSelectedIndex-Error AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben