【问题标题】:Getting a list view entry into a variable to remove from database将列表视图条目放入要从数据库中删除的变量中
【发布时间】:2015-04-08 18:22:35
【问题描述】:

我想要将选定的列表视图项放入变量中。更重要的是,选择中的特定条目,以便我可以将其从数据库中删除。

我的代码:

For Each i As ListViewItem In lstViewMembers.SelectedItems
        lstViewMembers.Items.Remove(i)
        Dim Remove As String
        Remove = lstViewMembers.Items(0)

        sql = "DELETE FROM tblMembers WHERE Name = '" & Remove & "'"
        da = New OleDb.OleDbDataAdapter(sql, con)
        da.Fill(ds, "Remove")
    Next

姓名是列表视图中的第二列,我如何使用该姓名从数据库中删除选定的人?

谢谢,

安迪

【问题讨论】:

标签: sql vba listview


【解决方案1】:

我假设 con 是一个活跃且开放的连接,而不仅仅是一个连接字符串。

为了 1) 进行最少的更改,2) 从数据库中删除它,以及 3) 将已删除的项目保留在 VB 列表中,这就是我要做的。我对 DataAdapters 很不熟悉 - 我知道有一种方法可以删除它们,但我没有使用过。

Dim Remove As String
For Each itemToDelete As ListViewItem In lstViewMembers.SelectedItems
    Remove = itemToDelete.Text 

    sql = "DELETE FROM tblMembers WHERE Name = '" & Remove & "'"

    SqlCommand cmd = New SqlCommand (sql, con)
    cmd.ExecuteNonQuery()
Next

确保在之后关闭并删除连接 - 连接很昂贵。有关执行此操作的方法,请参阅https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

为了降低sql-injection的风险,看这里参数的使用https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters%28v=vs.110%29.aspx

【讨论】:

  • 主要问题在于这一行 Remove = lstViewMembers.Items(i) 它指出“重载解析失败,因为无法使用这些参数调用可访问的‘项目’”(引用)
  • 更新了答案 - 它试图将“i”用作列表,而不是特定项目。
猜你喜欢
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多