The database file is locked

Tintenfisch

Bekanntes Mitglied
Hey, ich habe eine SQLite DB in welcher derzeit zwei Tabellen bestehen. Die erste Tabelle allein, stellt keinerlei Fehler dar. Die zweite wird zwar noch erstellt aber schmeißt beim schreiben der Daten "java.sql.SQLException: [SQLITE_BUSY] The database file is locked (database is locked)". Es wird auf statement.execute(sqlQuery); hingewiesen.
Alles was ich bisher recherchiert habe, geht in die Richtung, dass nicht mehrere Verbindungen gleichzeitig zur DB bestehen können, wobei an sich immer nach einem Execute geschlossen wird. Der Fehler Besteht auch bei auskommentierten Funktionen der ersten Tabelle.

[CODE lang="java" title="Main"]DBStatement dbStatement = new DBStatement();
dbStatement.checkDBConnection();
// Table 1
dbStatement.createUserDataTable();
dbStatement.insertUserData();
dbStatement.getUserData();
// Table 2
dbStatement.createSystemDataTable();
dbStatement.insertSystemData();

// (Sind im realen Code alle in Ty catch)
[/CODE]

[CODE lang="java" title="DBStatement"]// Table User Data
private final String TABLE_USER = "userData";
private final String COLUMN_LIST_NUMBER = "listNumber";
private final String COLUMN_ID = "id";
private final String COLUMN_NAME = "name";
private final String COLUMN_PASSWORD = "Password";
private final String COLUMN_ADMIN = "admin";

private void executeQuery (String sqlQuery) throws SQLException {
try {
connection = dbConnection.getConnection();
statement = connection.createStatement();
if (statement != null) {
statement.execute(sqlQuery); // <--- Hier wird drauf verwiesen
}
} finally {
statement.close();
connection.close();
}

public void createUserDataTable () throws SQLException {
String createTable ="CREATE TABLE IF NOT EXISTS " + TABLE_USER +
"( "
+ COLUMN_LIST_NUMBER + " INTEGER NOT NULL UNIQUE, "
+ COLUMN_ID + " STRING NOT NULL UNIQUE, "
+ COLUMN_NAME + " STRING NOT NULL UNIQUE, "
+ COLUMN_PASSWORD + " STRING NOT NULL, "
+ COLUMN_ADMIN + " INTEGER NOT NULL "
+ " )";

executeQuery(createTable);
}

// insert User Data
public void insertUserData () throws SQLException {

String insertData = "INSERT INTO " + TABLE_USER + " VALUES ";
for (int i = 0; i < User.getUsersArrayList().size(); i ++) {
insertData += "('" + User.getUser(i).getListNumber() + "', '"
+ User.getUser(i).getUserID() + "', '"
+ User.getUser(i).getName() + "', '"
+ User.getUser(i).getPassword() + "', "
+ booleanToInt(User.getUser(i).isAdmin()) + ")";
if (i < User.getUsersArrayList().size() - 1) {
insertData += ", ";
}
}
executeQuery(insertData);
}

// Table System Data
private final String TABLE_SYSTEM = "systemData";
private final String COLUMN_TABLE_COLUMN = "tableColumn";
private final String COLUMN_USER_NAME = "userName";
private final String COLUMN_COLUMN_VISIBLE = "columnVisible";

public void createSystemDataTable () throws SQLException {
String createTable = "CREATE TABLE IF NOT EXISTS " + TABLE_SYSTEM +
"( "
+ COLUMN_TABLE_COLUMN + " INTEGER PRIMARY KEY NOT NULL, "
+ COLUMN_USER_NAME + " STRING NOT NULL UNIQUE, "
+ COLUMN_COLUMN_VISIBLE + " INTEGER NOT NULL"
+ " )";

executeQuery(createTable);
}

// INSERT SYSTEM DATA
public void insertSystemData () throws SQLException {
String insertData = "INSERT INTO TABLE_SYSTEM VALUES ";
for (int i = 0; i < User.getUsersArrayList().size(); i ++) {
insertData += "(" + "NULL, '"
+ ((User) User.getUsersArrayList().get(i)).getName() + "', "
+ booleanToInt(((User) User.getUsersArrayList().get(i)).isColVis()) + ")";
if (i < User.getUsersArrayList().size() - 1) {
insertData += ", ";
}
}
executeQuery(insertData);
}

}[/CODE]
 

Tintenfisch

Bekanntes Mitglied
Problem gelöst. Im String wurde der Tabellenname nicht als Konstante sondern direkt im String geschrieben.

Java:
 public void insertSystemData () throws SQLException {
        String insertData = "INSERT INTO " + TABLE_SYSTEM + " VALUES ";         // <---
        for (int i = 0; i < User.getUsersArrayList().size(); i ++) {
            insertData += "("     + "NULL, '"
                                + ((User) User.getUsersArrayList().get(i)).getName() + "', "
                                + booleanToInt(((User) User.getUsersArrayList().get(i)).isColVis()) + ")";
            if (i < User.getUsersArrayList().size() - 1) {
                insertData += ", ";
            }
        }
        executeQuery(insertData);
    }
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Wie füge ich mit dem Database Connector etwas hinzu. Datenbankprogrammierung 1
berserkerdq2 database is closed, obwohl ich alle statements in try catch blöcken habe? Datenbankprogrammierung 5
Kirby.exe Sample Database in Postgres laden Datenbankprogrammierung 5
C Java MySQL check if value exists in database Datenbankprogrammierung 2
C Problem with insertion in database. Datenbankprogrammierung 7
B MySQL Data Tools Plattform - "Database Connections" findet den Treiber nicht Datenbankprogrammierung 1
L MySQL Database Helper Klasse mit Consumer Datenbankprogrammierung 7
J Java 8 und Microsoft Access Database-Dateien(mdb) Datenbankprogrammierung 1
M Derby/JavaDB Drop Database problem Datenbankprogrammierung 3
C Problem oder Denkfehler mit H2-Database Datenbankprogrammierung 3
S Oracle Database 11g , eclipse , Tabelle erstellen Datenbankprogrammierung 2
P Embedded Database und große Datenmengen Datenbankprogrammierung 23
G Database indexing Datenbankprogrammierung 7
B H2 Database Beispiel Source Code Datenbankprogrammierung 8
H hsqldb - Database must be shutdown Datenbankprogrammierung 10
A Fehlermeldung H2 Database Datenbankprogrammierung 3
A Datensatzsperrung unter H2 Database Datenbankprogrammierung 43
A Fehler beim Starten des Servers für H2 Database Datenbankprogrammierung 13
G Import einer csv-Datei in eine H2-Database Datenbankprogrammierung 12
J Database replication Datenbankprogrammierung 4
E Problem beim laden des JDBC Driver bzw der Database Datenbankprogrammierung 8
J Hibernate create database Datenbankprogrammierung 4
S Oracle DB-Connection in .jar file ändern Datenbankprogrammierung 11
Trèfle Adobe Acrobat Indexdatei (.PDX File) einlesen Datenbankprogrammierung 1
Dimax MySQL LOAD DATA INFILE -id aus dem Code und Rest aus dem File. Datenbankprogrammierung 5
E Warum kann mein SQL-File nicht in DB2 ausgeführt werden? Datenbankprogrammierung 1
E Kann man, wenn man in DB2 Tabellen erstellt hat für dessen auch einen Command-File erstellen? Datenbankprogrammierung 1
S CSV File in Datenbank speichern!? Datenbankprogrammierung 1
Y DB File Synchronisation Datenbankprogrammierung 6
G PostgreSQL jar-file läd db-treiber nicht Datenbankprogrammierung 6
C XML file zu groß Datenbankprogrammierung 2
F Input txt File Datenbankprogrammierung 5
S File lesen Datenbankprogrammierung 10
J Jar File erstellen Datenbankprogrammierung 8
D CSV File als Datenbank verwenden (JDBC) Datenbankprogrammierung 4
E Dringend Hilfe Firebird/Jaybird verbindet nicht; im jar file Datenbankprogrammierung 4
A Zugriff auf Remote MySQL-DB mit JAR-File Datenbankprogrammierung 7
A Probleme mit Jar-File in ein Jar-File Datenbankprogrammierung 8
B JDBC txt File keine Row ID Datenbankprogrammierung 4
V mdb-file erstellen? Datenbankprogrammierung 20
M java.sql.SQLException: Unable to open file Datenbankprogrammierung 2
E Jar File: NoClassDefFoundError: oracle/sql/ORAData Datenbankprogrammierung 2
G File nach Blob konvertieren ? Datenbankprogrammierung 6
P jar-File auswählen und Verbindung herstellen Datenbankprogrammierung 5
G How to put SQL query result into a file Datenbankprogrammierung 3
H File into blob Datenbankprogrammierung 3
E H2 Locked by another process Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben