2017-12-14 6 views
1

나는 두 가지 문제가 발생했습니다 내가 SQLite는 서버 컴팩트 도구 상자와 Nuget System.Data.SQLite -Version 1.0.106System.Data.SQLite.SQLiteException : 데이터베이스가 잠겨 있습니까?

을 사용하고

[참고 이것은 나의 첫번째 시간은 비주얼 스튜디오를 사용하여 SQL을 사용하여 코딩입니다] 데이터베이스

내가 노력하고있어 t 잠겨 : 매번 나는 그것이 나에게 System.Data.SQLite.SQLiteException이

이 오류를 계속 보내 저장하기 위해 노력하고있어 오 업데이트를 만들고 버튼을

을 삭제하는 것은 여기) (여기

Private Sub Bttn_Update_Click(sender As Object, e As EventArgs) Handles Update_Bttn.Click 

    Dim cons = New SQLiteConnection("uri=file:C:\Sqlite\Klinik_NurzawatiDB.db; version=3;Pooling=True;Max Pool Size=100;") 
    cons.Open() 

    If TextBox2.Text = "" Then 
     MsgBox("Please insert a file Series", vbCritical, "Cannot update: Missing") 

    ElseIf TextBox5.Text = "" Then 
     MsgBox("Please insert file Group", vbInformation, "Required") 
     TextBox5.Select() 

    Else 

     Try 

      Dim sql As String = "UPDATE ClassTbl SET Series='" & TextBox2.Text & "', SubSeries='" & TextBox3.Text & "', Groups='" & TextBox5.Text & "', SubGroup='" & TextBox4.Text & "', ReferenceCode='" & TextBox6.Text & "',Seperator='" & TextBox7.Text & "', ItemName='" & TextBox1.Text & "' WHERE ID ='" & TextBox9.Text & "'" 
      Dim cmd As SQLiteCommand = New SQLiteCommand(sql, cons) 
      cmd.ExecuteNonQuery() 

      MsgBox("Successfully updated!", MsgBoxStyle.Information, "File Status") 
      '^OK 

      TextBox1.Text = "" 
      TextBox2.Text = "" 
      TextBox3.Text = "" 
      TextBox4.Text = "" 
      TextBox5.Text = "" 
      TextBox6.Text = "" 
      TextBox7.Text = "" 
      TextBox8.Text = "" 


     Catch ex As Exception 
      MsgBox(ex.ToString) 
     End Try 

    End If 
End Sub 

내 삭제 버튼

Private Sub Delete_Bttn_Click(sender As Object, e As EventArgs) Handles Delete_Bttn.Click 
    If TextBox9.Text = "" Then 
     MsgBox("Please select Id to delete", vbExclamation, "File not selected") 

    Else 
     Dim con As New SQLiteConnection("uri=file:c:\sqlite\Klinik_NurzawatiDB.db; Version=3") 
     con.Open() 


     Dim response As DialogResult = 
      MessageBox.Show(
      "Are you sure you want to delete this row?", 
      "Records Lite: Confirm delete?", 
      MessageBoxButtons.YesNo, 
      MessageBoxIcon.Question, 
      MessageBoxDefaultButton.Button2) 


     If (response = DialogResult.No) Then 
      'e.Cancel = True 
      Exit Sub 
      TextBox2.Text = "" 
     End If 

     Dim sql As String 
     sql = "Delete From ClassTbl WHERE ID like '" & TextBox9.Text & "'" 
     Dim cmd As SQLiteCommand = New SQLiteCommand(sql, con) 
     cmd.ExecuteNonQuery() 
     con.Close() 


     MsgBox("Successfully", vbInformation, "Delete status") 




    End If 
End Sub 

나는 항상 발생하는 문제

cmd.ExecuteNonQuery에서 내 업데이트 버튼

입니다

두 단추 모두 해결 방법은 무엇입니까? 이미 동일한 데이터베이스를 만들었지 만 여전히 이러한 문제가 발생했습니다.

+0

예! 내 업데이트 버튼에 cons.close()를 넣는 것을 잊어 버렸습니다! 그것을 알아 줘서 고마워. 죄송합니다, 내 강사 가이 방법을 사용하여 주장하지만 실제로는 오직 선택과 MS 액세스에서 같은 기본 SQL 명령을 알고 –

+0

난 당신이 cmd.ExecuteNonQuery 바로 위에 당신의 연결을 열어서는 안됩니다 당신은 사용자 질문을하고 그들은 갔었을 수도 있습니다 당신의 연결이 열려 있거나 시간 초과되는 동안 커피 잔. – Mary

답변

3

코드에 문제가있어 업데이트 방법에서 연결을 닫지 못하는 것입니다. cons.Close()을 추가해야합니다. 어쨌든 구현하는 모든 클래스에서 Using을 사용하는 것이 좋습니다. IDisposable