2016-10-24 2 views
1

ich versuche eine einfache Anwendung mit h2 Datenbank zu machen. Programm funktioniert nur einmal perfekt. Wenn ich versuche, mehr Daten einzufügen, ist ein Fehler aufgetreten.Java Embedded Database h2

org.h2.jdbc.JdbcSQLException: Die Datenbank wird möglicherweise bereits verwendet: "C: /Users/ali/bookDB.mv.db". Mögliche Lösungen: Schließen Sie alle anderen Verbindungen; Verwenden Sie den Server-Modus [90020-186]

java.lang.IllegalStateException: Die Datei ist gesperrt, nio: C: /Users/ali/bookDB.mv.db [1.4.186/7]

-Code

ist
package h2_basic; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.Statement; 

public class H2_Basic { 

    public static void main(String[] args) { 
     try{ 
     Class.forName("org.h2.Driver"); 
      Connection con = DriverManager.getConnection("jdbc:h2:~/bookDB","test","test"); 
      Statement sta = con.createStatement(); 
      String CREATE_TABLE = "CREATE TABLE BOOKS " 
      + "(bookid bigint auto_increment NOT NULL PRIMARY KEY, " 
      + " booktitle VARCHAR(255), " 
      + " bookauthor VARCHAR(255), " 
      + " editiondate VARCHAR(255))"; 

      sta.execute(CREATE_TABLE); 

      String sql = "INSERT INTO BOOKS (booktitle, bookauthor, editiondate) VALUES ('ali','ali','12')"; 
      sta.execute(sql); 
     }catch(Exception ex) 
     { 
      ex.printStackTrace(); 
     } 
    } 

} 
+0

Das klingt, als ob Ihre H2-Datenbankdatei gesperrt ist. –

+0

Ich denke, Verbindungen sind nicht geschlossen. Add schließe schließlich die Verbindung und schließe die Verbindung wie 'finally {con.close(); } ' – Shettyh

Antwort

0

Ihre JDBC-URL ändern zu jdbc:h2:~/bookDB;AUTO_SERVER=TRUE, wie in

DriverManager.getConnection("jdbc:h2:~/bookDB;AUTO_SERVER=TRUE","test","test"); 

H2 startet in Automatic Mixed Mode.

+0

org.h2.jdbc.JdbcSQLException: Die Datenbank wird möglicherweise bereits verwendet:" C: /Users/ali/bookDB.mv.db ". Mögliche Lösungen: Schließen Sie alle anderen Verbindungen; Verwenden Sie den Server-Modus [90020-186] –

+0

Jetzt ist dieser Fehler aufgetreten –

+0

Entfernen Sie einfach die Sperrdatei einmal. Danach wird es wie erwartet funktionieren. –

Verwandte Themen