2015-11-29 4 views
0

Когда я пытаюсь обновить (или заменить) записи в моей базе данных, она показывает ошибку «База данных заблокирована»!SQLITE «База данных заблокирована» (Java - Eclipse)

Например, эта кнопка должна обновить сведения аккаунта пользователя:

JButton btnUpdate = new JButton("Update"); 
btnUpdate.addActionListener(new ActionListener() { 
public void actionPerformed(ActionEvent e) { 

     Connection connection3 = SqliteConnection.dbConnector(); 
     PreparedStatement pst1 = null; 

    try { 

     String q1 = "replace into Users (FullName,UserName,Email,Password,Question,Answer,UserType) values('"+FullName.getText()+"' ,'"+MainPage.getAuthUser()+"' , '"+Email.getText()+"', '"+Pass.getPassword().toString()+"' , '"+Question.getSelectedItem().toString()+"' , '"+Answer.getText()+"' , '"+UserType.getSelectedItem().toString()+"') "; 
     //String q1 = "update Users FullName = '"+FullName.getText()+"' where UserName like '"+MainPage.getAuthUser()+"' "; 
     pst1 = connection3.prepareStatement(q1); 

     pst1.executeUpdate(); 
     pst1.close(); 
     connection3.close(); 

    } catch (SQLException e6) { 
     JOptionPane.showMessageDialog(null, e6); 
    } 
    } 
}); 

Я использовал то же самое соединение для вставки записей (создать учетную запись) и для выбора некоторых из них (логин) и эти кнопки работают хорошо.

Я даже попытался закрыть оба, соединение и утверждение, в блок finally, но все еще не работает.

ответ

0

база данных блокируется любой активной транзакции.

Проблема не в том, что код (хотя try/finally - хорошая идея), но, вероятно, с другим кодом в том же приложении. Вы должны проверить все другие обращения к базе данных.

0

вы можете проверить, что замки файл базы данных. под Linux вы можете использовать следующую команду, чтобы проверить процесс блокировки DB файл:

$ термоэлемента db_name.db

Смежные вопросы