SQLITE_BUSY Le fichier de base de données est verrouillée (base de données est verrouillée) au guichet
Je suis en train de faire un projet de guichet
Comment résoudre le problème.
Je suis tombé sur un message de ce type:
WicketMessage: ne Peut pas instancier page à l'aide de constructeur public csi.blg361.g03.Page d'accueil()
Cause:
java.lang.UnsupportedOperationException: [SQLITE_BUSY] Le fichier de base de données est verrouillée (base de données est verrouillée)
au itucs.blg361.g03.CategoryEvents.CategoryEventCollection.getCategoryEvents(CategoryEventCollection.java:41)
public List<CategoryEvent> getCategoryEvents() {
List<CategoryEvent> categoryEvents = new
LinkedList<CategoryEvent>();
try {
String query = "SELECT id, name, group_id"
+ " FROM event_category";
Statement statement = this.db.createStatement();
ResultSet result = statement.executeQuery(query);
while (result.next()) {
int id = result.getInt("id");
String name = result.getString("name");
int group_id = result.getInt("group_id");
categoryEvents.add(new CategoryEvent(id, name, group_id));
}
} catch (SQLException ex) {
throw new UnsupportedOperationException(ex.getMessage());
}
return categoryEvents;
}
au csi.blg361.g03.La page d'accueil.(Page d'accueil.java:71)
categories = categoryCollection.getCategoryEvents();
à java.lang.de réfléchir.Constructeur.newInstance(Constructeur.java:525)
Ainsi, à l'Exception dit tout: la base de données est verrouillée. Cela n'a rien à faire de guichet, mais se rapporte entièrement à votre base de données. Aussi, je suggère d'utiliser correctement les Exceptions. UnsupportedOperationException() sematicly mal ici.
Je l'utilise de cette façon: catch(Exception e) { e.printStackTrace(); à la Place de celui-ci: catch (SQLException ex) { throw new UnsupportedOperationException(ex.getMessage()); } Maintenant, cela semble ok. Une autre idée?
Je l'utilise de cette façon: catch(Exception e) { e.printStackTrace(); à la Place de celui-ci: catch (SQLException ex) { throw new UnsupportedOperationException(ex.getMessage()); } Maintenant, cela semble ok. Une autre idée?
OriginalL'auteur Burak Dağlı | 2011-12-19
Vous devez vous connecter pour publier un commentaire.
Sqlite permet à un seul écrivain à l'ensemble de la base de données à la fois et, sauf si vous avez sélectionné "WAL" journal de mode, pas de lecteur lors de l'écriture. En outre, sauf si vous demandez explicitement à attendre, il renvoie simplement la SQLITE_BUSY état pour toute tentative d'accès à la base de données en conflit opération est en cours.
Vous pouvez dire sqlite attendre pour la base de données est disponible pour des laps de temps spécifié. C-niveau de l'API est
sqlite3_busy_timeout
; je n'ai jamais utilisé sqlite à partir de Java, donc je ne sais pas où le trouver là.OriginalL'auteur Jan Hudec
Dans l'ordre de le faire à partir de Java, exécutez l'instruction suivante comme une simple instruction SQL:
OriginalL'auteur Stephan