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