.net - 系统.Data.SQLite.SQLiteException : Database is locked?

标签 .net vb.net visual-studio sqlite

我遇到了两个问题 [注意:这是我第一次使用 Visual Studio 使用 SQL 进行编码]

我正在使用 SQLite Server Compact 工具箱和 Nuget System.Data.SQLite -版本 1.0.106

每次我尝试保存它时,都会向我发送此错误

System.Data.SQLite.SQLiteException: Database is locked

我正在尝试创建更新和删除按钮

这是我的更新按钮

   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()

对于这两个按钮,有什么解决办法吗?我已经创建了相同的数据库,但仍然遇到这些问题

最佳答案

您的代码的问题是您没有在更新方法中关闭连接。您需要添加一个cons.Close()。不管怎样,使用Using总是一个好主意。在所有实现 IDisposable 的类中

关于.net - 系统.Data.SQLite.SQLiteException : Database is locked?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47813256/

相关文章:

c# - 使用非默认 AlgorithmIdentifier 解密 EnvelopedCms

.net - Entity Framework 是否支持并行异步查询?

asp.net - 在 asp.net 处理程序中访问 session

visual-studio - Xamarin - 如何将启动屏幕图像居中(iOS)?

.net - 如何从网络共享文件中获取关联的图标

c# - .NET 是否有任何框架来填充测试数据?

VB.NET IsNot 用于字符串比较

c++ - 使用 CoCreateInstance 从 C++ 调用 COMVisible VB.Net dll

visual-studio - 在 Visual Studio 2008 C# 中更改 Dll 文件夹

c# - 没有获得安装包 Microsoft Entity Framework Core 的选项