【问题标题】:VB.Net SQLite Deletion not persisting?VB.Net SQLite 删除不持久?
【发布时间】:2017-10-18 03:51:57
【问题描述】:

尝试删除一行,但没有收到任何异常,但在我重新加载数据库时删除不会持续存在。请只对有用的cmets。我没有发布我项目中的所有代码,只发布我的问题的相关部分。

Private testsList As BindingList(Of ProxyTest)

Private Sub DeleteTest(test As ProxyTest)
    Using conn As New SQLiteConnection(connString)
        conn.Open()
        Using cmd As New SQLiteCommand("DELETE FROM tests WHERE url = @url", conn)
            cmd.Parameters.AddWithValue("@url", test.URL)
            ExecuteNonQuery(conn, cmd)
        End Using
    End Using
End Sub

Public Function ExecuteNonQuery(conn As SQLiteConnection, sqlCommand As SQLiteCommand)
    Dim affectedRows As Integer = 0
    sqlCommand.Connection = conn
    affectedRows = sqlCommand.ExecuteNonQuery()
    Return affectedRows
End Function

Private Sub btnRemoveTest_Click(sender As Object, e As EventArgs) Handles btnRemoveTest.Click
    For Each row As DataGridViewRow In dgvTests.SelectedRows
        DeleteTest(testsList(row.Index))
        testsList.RemoveAt(row.Index)
    Next
End Sub

我的 SQLite 数据库架构

创建表 tests ( url TEXT, validationString TEXT, invalidationString 文本,isValid 整数,主键(url))

【问题讨论】:

  • 当您使用调试时,数据库在每次运行时都会重新生成为空。构建您的项目,然后使用它,数据将保存在数据库中
  • @Mederic 你能详细说明一下吗?我正在构建我的项目并使用它。我省略了通过 SELECT 添加和加载的代码,因为它们超出了我的问题范围。添加部分是持久的,删除不是。当然,除了语句本身之外,添加的代码完全相同。
  • 不知道如何更好地解释:每次在调试模式下运行项目时,如果您使用 VS 创建数据库,则会重新生成数据库。因此,您需要构建项目并在调试中对其进行测试,以查看即使在应用程序关闭时仍保留在数据库中的数据
  • David 在 Release 中构建您的项目并转到 Release 目录并启动 exe,您将看到更改仍然存在
  • @Mederic 不知道为什么,但我解决了自己的问题。我能够让我的更改在调试模式下持续存在,但我不得不删除以前创建的数据库并重新制作它,我认为这可能是我在调试期间所做的架构更改。 :\

标签: vb.net sqlite


【解决方案1】:

删除我的数据库并重新创建它,解决了问题。认为这是我在调试期间所做的一个小的架构更改。

【讨论】:

  • 很高兴你修好了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
  • 2023-04-08
  • 1970-01-01
  • 2021-04-04
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多