@Parameter没有默认值 [英] @Parameter Has No Default Value

查看:112
本文介绍了@Parameter没有默认值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一种感觉,这只是重新排列几行,但我自己无法弄明白。这部分代码背后的想法很简单。



我有一个listview作为一个项目包,当你获得一个项目(通过使用另一部分它被放入listview中。列表视图有3列:项目名称,项目质量和销售价格。当您单击使用按钮时,它应该在数据库中找到所选项目,并根据项目类别将其分配到设备屏幕中的插槽。但是,我之前使用过的代码布局没问题,突然给我带来了问题。



  Dim  DbConnection  As   OleDbConnection(DbString)
< span class =code-comment>' 为项目列表创建数据表
Dim ItemSelect As OleDbCommand( SELECT * FROM [Item List] WHERE [Item Name] =?AND [Item Quality] =?,DbConnection)

< span class =code-keyword> Dim ItemNameParam As OleDbParameter( ,OleDbType.VarChar)
ItemSelect.Parameters.Add(ItemNameParam)

Dim ItemQualityParam As OleDbParameter( ,OleDbType.VarChar)
ItemSelect.Parameters.Add(ItemQualityParam)

Dim item As ListViewItem

Dim ItemClass 作为 整数

Dim itemda As OleDbDataAdapter(ItemSelect)
Dim itemds As DataSet

itemda.Fill(itemds, 项目列表

Dim itemdt As DataTable = itemds.Tables( 项目列表
Dim itemrow As DataRow

如果 ItemBagList.SelectedItems.Count> 1 然后
MsgBox( 您一次只能使用/装备一件物品

ElseIf ItemBagList.SelectedItems.Count = 1 然后

For 每个 ItemBagList.SelectedItems

对于 每个 itemrow itemdt中。行
ItemNameParam.Value = item.SubItems( 0
ItemQualityParam.Value = item.SubItems( 1
ItemClass = itemrow( Item Class

如果 ItemClass = 2 ItemClass = 22 然后
EquipItems.HelmetEquip.Text = ItemNameParam.Value
EquipItems.HelmetQuality.SelectedItem = ItemQualityParam.Value

ElseIf ItemClass = 3 ItemClass = 23 然后
EquipItems.ArmorEquip.Text = ItemNameParam.Value
EquipItems.ArmorQuality.SelectedItem = ItemQualityParam.Value

ElseIf ItemClass = 4 ItemClass = 24 然后
EquipIte ms.LeggingsEquip.Text = ItemNameParam.Value
EquipItems.LeggingsQuality.SelectedItem = ItemQualityParam.Value

ElseIf ItemClass = 5 ItemClass = 25 然后
EquipItems.BootsEquip.Text = ItemNameParam.Value
EquipItems.BootsQuality.SelectedItem = ItemQualityParam.Value

ElseIf ItemClass = 6 ItemClass = 26 然后
EquipItems.GauntletsEquip.Text = ItemNameParam.Value
EquipItems.GauntletsQuality.SelectedItem = ItemQualityParam.Value

ElseIf ItemClass = 29 然后
如果 EquipItems.RRingEquip.Text = 然后
EquipItems.RRingEquip.Text = ItemNameParam.Value
EquipItems.RRingQuality.SelectedItem = ItemQualityParam.Value

ElseIf EquipItems.RRingEquip.Text <> EquipItems.LRingEquip。 Text = 然后
EquipItems.LRingEquip.Text = ItemNameParam.Value
EquipItems.LRingQuality.SelectedItem = ItemQualityParam.Value

ElseIf EquipItems.RRingEquip .Text<> EquipItems.LRingEquip。文字<> 然后
Dim RingEquip As DialogResult = MessageBox.Show( 单击是以装备到右手,单击否装备左手,_
重要查询,MessageBoxButtons.YesNoCancel)

如果 RingEquip = DialogResult.Yes 然后
EquipItems.RRingEquip.Text = ItemNameParam.Value
EquipItems.RRingQuality.SelectedItem = ItemQualityParam.Value

ElseIf RingEquip = DialogResult.No 然后
EquipItems.LRingEquip.Text = ItemNameParam.Value
EquipItems.LRingQuality.SelectedItem = ItemQualityParam.Value

结束 如果
结束 如果

ElseIf ItemClass = 30 然后
EquipItems.NecklaceEquip.Text = ItemNameParam.Value
EquipItems.NecklaceQuality.SelectedItem = ItemQualityParam.Value

ElseIf ItemClass = 31 然后
EquipItems.EarringEquip。 Text = ItemNameParam.Value
EquipItems.EarringQuality.SelectedItem = ItemQualityParam

ElseIf ItemClass = 8 ItemClass = 10 ItemClass = 11 ItemClass = 13 ItemClass = 16 ItemClass = 17 < span class =code-keyword>或 ItemClass = 18 然后
Dim WepEquip As DialogResult = MessageBox.Show( 单击是以装备到右手,单击否以装备到左手,_
重要查询,MessageBoxButtons.YesNoCancel)

如果 WepEquip = DialogResult.Yes 那么
EquipItems.RWeaponEquip.Text = ItemNameParam.Value

< span class =code-keyword> ElseIf WepEquip = DialogResult.No 然后
EquipItems.LWeaponEquip.Text = ItemNameParam.Value

ElseIf WepEquip = DialogResult.Cancel 然后

结束 如果

ElseIf ItemClass = 9 ItemClass = 12 Ite mClass = 14 ItemClass = 15 < span class =code-keyword>然后
EquipItems.RWeaponEquip.Text = ItemNameParam.Value
EquipItems.LWeaponEquip.Text = ItemNameParam.Value
EquipItems.RWeaponQuality.Text = ItemQualityParam.Value
EquipItems.LWeaponQuality.Text = ItemQualityParam.Value

ElseIf ItemClass = 19 ItemClass = 20 ItemClass = 21 然后
EquipItems.LWeaponEquip.Text = ItemNameParam.Value
EquipItems.LWeaponQuality.SelectedItem = ItemQualityParam

Else

对于 每个 i 作为 ListViewItem In ItemBagList.SelectedItems
i.Remove()
Next

结束 如果
下一步
下一步
结束 如果





当我运行调试器时,它指向数据适配器.Fill命令并说@ItemName没有默认值。它的唯一工作方式是,如果在.Fill命令之前分配了值,但我无法将值放在那里,因为item没有值。并且我无法将.Fill命令移动到值调用,因为在我可以调用其行之前需要填充dt。我肯定答案是盯着我,但我只是看不到它。



编辑:我找到了解决原始问题的方法,但它会生成另一个问题。我在第一个For Each中移动了da,ds和dt调用,并将参数值调用移动到第一个For Each,所以现在数据适配器可以看到这些值。然而,它似乎无法理解价值。



 Dim DbConnection As New OleDbConnection(DbString)
'创建了项目列表的数据表
Dim ItemSelect As New OleDbCommand(SELECT * FROM [Item List] WHERE [Item Name] =?AND [Item Quality] =?,DbConnection)



如果ItemBagList.SelectedItems.Count> 1然后
MsgBox(你一次只能使用/装备一件物品)

ElseIf ItemBagList.SelectedItems.Count = 1然后

For Each item在ItemBagList.SelectedItems
Dim ItemNameParam As New OleDbParameter(?,OleDbType.VarChar)
ItemSelect.Parameters.Add(ItemNameParam)

Dim ItemQualityParam As New OleDbParameter(? ,OleDbType.VarChar)
ItemSelect.Parameters.Add(ItemQualityParam)

ItemNameParam.Value = item.SubItems(0)
ItemQualityParam.Value = item.SubItems(1)

Dim ItemClass As Integer

Dim itemda As New OleDbDataAdapter(ItemSelect)
Dim itemds As New DataSet

itemda.Fill(itemds ,项目列表)

Dim itemdt As DataTable = itemds.Tables(Item List)
Dim itemrow As DataRow

For each itemrow in itemdt。行
ItemClass = itemrow(Item Class)

如果ItemClass = 2或ItemClass = 22那么
EquipItems.HelmetEquip.Text = ItemNameParam.Value
EquipItems.HelmetQuality.SelectedItem = ItemQualityParam.Value

ElseIf ItemClass = 3 Or ItemClass = 23然后
EquipItems.ArmorEquip.Text = ItemNameParam.Value
EquipItems.ArmorQuality.SelectedItem = ItemQualityParam.Value

ElseIf ItemClass = 4 Or ItemClass = 24 Then
EquipItems .LeggingsEquip.Text = ItemNameParam.Value
EquipItems.LeggingsQuality.SelectedItem = ItemQualityParam.Value

ElseIf ItemClass = 5 Or ItemClass = 25 Then
EquipItems.BootsEquip.Text = ItemNameParam。价值
EquipItems.BootsQuality.SelectedItem = ItemQualityParam.Value

ElseIf ItemClass = 6或ItemClass = 26然后
EquipItems.GauntletsEquip.Text = ItemNamePara m.Value
EquipItems.GauntletsQuality.SelectedItem = ItemQualityParam.Value

ElseIf ItemClass = 29然后
如果EquipItems.RRingEquip.Text =None那么
EquipItems。 RRingEquip.Text = ItemNameParam.Value
EquipItems.RRingQuality.SelectedItem = ItemQualityParam.Value

ElseIf EquipItems.RRingEquip.Text<> 无和EquipItems.LRingEquip.Text =无然后
EquipItems.LRingEquip.Text = ItemNameParam.Value
EquipItems.LRingQuality.SelectedItem = ItemQualityParam.Value

ElseIf EquipItems .RRingEquip.Text<> 无和EquipItems.LRingEquip.Text<> 无然后
Dim RingEquip As DialogResult = MessageBox.Show(点击是装备右手,点击否装备左手,_
重要查询,MessageBoxButtons.YesNoCancel)

如果RingEquip = DialogResult.Yes那么
EquipItems.RRingEquip.Text = ItemNameParam.Value
EquipItems.RRingQuality.SelectedItem = ItemQualityParam.Value

ElseIf RingEquip = DialogResult.No然后
EquipItems.LRingEquip.Text = ItemNameParam.Value
EquipItems.LRingQuality.SelectedItem = ItemQualityParam.Value

结束如果
结束如果

ElseIf ItemClass = 30然后
EquipItems.NecklaceEquip.Text = ItemNameParam.Value
EquipItems.NecklaceQuality.SelectedItem = ItemQualityParam.Value

ElseIf ItemClass = 31然后
EquipItems.EarringEquip.Text = ItemNameParam.Value
EquipItems.EarringQuality.SelectedItem = ItemQualityParam

ElseIf ItemClass = 8或ItemClass = 10 Or ItemClass = 11 Or ItemClass = 13 Or ItemClass = 16 Or ItemClass = 17 Or ItemClass = 18然后
Dim WepEquip As DialogResult = MessageBox.Show(点击是装备右手,单击否以装备左手,_
重要查询,MessageBoxButtons.YesNoCancel)

如果WepEquip = DialogResult.Yes然后
EquipItems.RWeaponEquip.Text = ItemNameParam。价值

ElseIf WepEquip = DialogResult.No然后
EquipItems.LWeaponEquip.Text = ItemNameParam.Value

ElseIf WepEquip = DialogResult.Cancel然后

结束如果

ElseIf ItemClass = 9或ItemClass = 12或ItemClass = 14或ItemClass = 15然后
EquipItems.RWeaponEquip.Text = ItemNameParam.Value
EquipItems.LWeaponEquip。 Text = ItemNameParam.Value
EquipItems.RWeaponQuality.Text = ItemQualityParam.Value
EquipItems.LWeaponQuality.Text = ItemQualityParam.Value

ElseIf ItemClass = 19 Or ItemClass = 20 Or ItemClass = 21然后
EquipItems.LWeaponEquip.Text = ItemNameParam.Value
EquipItems.LWeaponQuality.SelectedItem = ItemQualityParam

Else

For Each i作为ListViewItem在ItemBagList中.SelectedItems
i.Remove()
Next

End if
Next
Next
End if

解决方案

OLEDb参数化查询es与SQLClient查询略有不同。这是为了让它们成为其他连接驱动程序的通用。



阅读本文以了解更多信息

Parameters - SqlCommand vs. OledbCommand和OdbcCommand [ ^ ]



祝你好运^ _ ^





更新:OP已更正参数但仍然出错:



您正在添加参数,但您也需要给它们值:



 Dim ItemNameParam As New OleDbParameter( ,OleDbType.VarChar)
// 我无法检查语法,因为我在家,但是类似于:
ItemNameParam.Value = SomeString;
ItemSelect.Parameters.Add(ItemNameParam)







此解决方案确实回答了原始问题,但这是最新一期的解决方案:

ItemNameParam.Value = item.SubItems(0)不起作用。



SubItems(0)是一个ListViewItem.ListViewSubItem。 [ ^ ]要获得显示的值,您应该使用Text属性:

   ItemNameParam.Value = item.SubItems(0).Text  


I have a feeling it's just a matter of rearranging a few lines but I can't figure it out myself. The idea behind this section of code is simple.

I have a listview that serves as an item bag, when you gain an item (through the use of another part of the program) it gets put into the listview. The listview has 3 columns: Item Name, Item Quality, and Sell Price. When you click the use button, it's supposed to find the selected item in the database, and assign it to a slot in the equipment screen based on the item class. However, a code layout that I've used before with no problem, is suddenly giving me problems.

Dim DbConnection As New OleDbConnection(DbString)
'creates the datatable for the Item List
Dim ItemSelect As New OleDbCommand("SELECT * FROM [Item List] WHERE [Item Name] = ? AND [Item Quality] = ?", DbConnection)

Dim ItemNameParam As New OleDbParameter("?", OleDbType.VarChar)
ItemSelect.Parameters.Add(ItemNameParam)

Dim ItemQualityParam As New OleDbParameter("?", OleDbType.VarChar)
ItemSelect.Parameters.Add(ItemQualityParam)

Dim item As ListViewItem

Dim ItemClass As Integer

Dim itemda As New OleDbDataAdapter(ItemSelect)
Dim itemds As New DataSet

itemda.Fill(itemds, "Item List")

Dim itemdt As DataTable = itemds.Tables("Item List")
Dim itemrow As DataRow

If ItemBagList.SelectedItems.Count > 1 Then
    MsgBox("You can only use/equip one item at a time")

ElseIf ItemBagList.SelectedItems.Count = 1 Then

    For Each item In ItemBagList.SelectedItems

        For Each itemrow In itemdt.Rows
            ItemNameParam.Value = item.SubItems(0)
            ItemQualityParam.Value = item.SubItems(1)
            ItemClass = itemrow("Item Class")

            If ItemClass = 2 Or ItemClass = 22 Then
                EquipItems.HelmetEquip.Text = ItemNameParam.Value
                EquipItems.HelmetQuality.SelectedItem = ItemQualityParam.Value

            ElseIf ItemClass = 3 Or ItemClass = 23 Then
                EquipItems.ArmorEquip.Text = ItemNameParam.Value
                EquipItems.ArmorQuality.SelectedItem = ItemQualityParam.Value

            ElseIf ItemClass = 4 Or ItemClass = 24 Then
                EquipItems.LeggingsEquip.Text = ItemNameParam.Value
                EquipItems.LeggingsQuality.SelectedItem = ItemQualityParam.Value

            ElseIf ItemClass = 5 Or ItemClass = 25 Then
                EquipItems.BootsEquip.Text = ItemNameParam.Value
                EquipItems.BootsQuality.SelectedItem = ItemQualityParam.Value

            ElseIf ItemClass = 6 Or ItemClass = 26 Then
                EquipItems.GauntletsEquip.Text = ItemNameParam.Value
                EquipItems.GauntletsQuality.SelectedItem = ItemQualityParam.Value

            ElseIf ItemClass = 29 Then
                If EquipItems.RRingEquip.Text = "None" Then
                    EquipItems.RRingEquip.Text = ItemNameParam.Value
                    EquipItems.RRingQuality.SelectedItem = ItemQualityParam.Value

                ElseIf EquipItems.RRingEquip.Text <> "None" And EquipItems.LRingEquip.Text = "None" Then
                    EquipItems.LRingEquip.Text = ItemNameParam.Value
                    EquipItems.LRingQuality.SelectedItem = ItemQualityParam.Value

                ElseIf EquipItems.RRingEquip.Text <> "None" And EquipItems.LRingEquip.Text <> "None" Then
                    Dim RingEquip As DialogResult = MessageBox.Show("Click Yes to equip to right hand, click No to equip to left hand", _
                                                                "Important Query", MessageBoxButtons.YesNoCancel)

                    If RingEquip = DialogResult.Yes Then
                        EquipItems.RRingEquip.Text = ItemNameParam.Value
                        EquipItems.RRingQuality.SelectedItem = ItemQualityParam.Value

                    ElseIf RingEquip = DialogResult.No Then
                        EquipItems.LRingEquip.Text = ItemNameParam.Value
                        EquipItems.LRingQuality.SelectedItem = ItemQualityParam.Value

                    End If
                End If

            ElseIf ItemClass = 30 Then
                EquipItems.NecklaceEquip.Text = ItemNameParam.Value
                EquipItems.NecklaceQuality.SelectedItem = ItemQualityParam.Value

            ElseIf ItemClass = 31 Then
                EquipItems.EarringEquip.Text = ItemNameParam.Value
                EquipItems.EarringQuality.SelectedItem = ItemQualityParam

            ElseIf ItemClass = 8 Or ItemClass = 10 Or ItemClass = 11 Or ItemClass = 13 Or ItemClass = 16 Or ItemClass = 17 Or ItemClass = 18 Then
                Dim WepEquip As DialogResult = MessageBox.Show("Click Yes to equip to right hand, click No to equip to left hand", _
                                                                "Important Query", MessageBoxButtons.YesNoCancel)

                If WepEquip = DialogResult.Yes Then
                    EquipItems.RWeaponEquip.Text = ItemNameParam.Value

                ElseIf WepEquip = DialogResult.No Then
                    EquipItems.LWeaponEquip.Text = ItemNameParam.Value

                ElseIf WepEquip = DialogResult.Cancel Then

                End If

            ElseIf ItemClass = 9 Or ItemClass = 12 Or ItemClass = 14 Or ItemClass = 15 Then
                EquipItems.RWeaponEquip.Text = ItemNameParam.Value
                EquipItems.LWeaponEquip.Text = ItemNameParam.Value
                EquipItems.RWeaponQuality.Text = ItemQualityParam.Value
                EquipItems.LWeaponQuality.Text = ItemQualityParam.Value

            ElseIf ItemClass = 19 Or ItemClass = 20 Or ItemClass = 21 Then
                EquipItems.LWeaponEquip.Text = ItemNameParam.Value
                EquipItems.LWeaponQuality.SelectedItem = ItemQualityParam

            Else

                For Each i As ListViewItem In ItemBagList.SelectedItems
                    i.Remove()
                Next

            End If
        Next
    Next
End If



When I run the debugger it points to the data adapter .Fill command and says that @ItemName has no default value. The only way it works is if the value is assigned before the .Fill command, but I can't put the values up there because item has no value up there. And I can't move the .Fill command down to the value call because dt needs to be filled before I can call on its rows. I am sure the answer is staring me in the face but I just don't see it.

EDIT: I found a way to fix the original problem but it generates another problem. I moved the da, ds, and dt calls inside the first For Each and moved the parameter value calls to the first For Each, so now the data adapter can see the values. However, it doesn't seem capable of comprehending the value.

Dim DbConnection As New OleDbConnection(DbString)
'creates the datatable for the Item List
Dim ItemSelect As New OleDbCommand("SELECT * FROM [Item List] WHERE [Item Name] = ? AND [Item Quality] = ?", DbConnection)



If ItemBagList.SelectedItems.Count > 1 Then
    MsgBox("You can only use/equip one item at a time")

ElseIf ItemBagList.SelectedItems.Count = 1 Then

    For Each item In ItemBagList.SelectedItems
        Dim ItemNameParam As New OleDbParameter("?", OleDbType.VarChar)
        ItemSelect.Parameters.Add(ItemNameParam)

        Dim ItemQualityParam As New OleDbParameter("?", OleDbType.VarChar)
        ItemSelect.Parameters.Add(ItemQualityParam)

        ItemNameParam.Value = item.SubItems(0)
        ItemQualityParam.Value = item.SubItems(1)

        Dim ItemClass As Integer

        Dim itemda As New OleDbDataAdapter(ItemSelect)
        Dim itemds As New DataSet

        itemda.Fill(itemds, "Item List")

        Dim itemdt As DataTable = itemds.Tables("Item List")
        Dim itemrow As DataRow

        For Each itemrow In itemdt.Rows
            ItemClass = itemrow("Item Class")

            If ItemClass = 2 Or ItemClass = 22 Then
                EquipItems.HelmetEquip.Text = ItemNameParam.Value
                EquipItems.HelmetQuality.SelectedItem = ItemQualityParam.Value

            ElseIf ItemClass = 3 Or ItemClass = 23 Then
                EquipItems.ArmorEquip.Text = ItemNameParam.Value
                EquipItems.ArmorQuality.SelectedItem = ItemQualityParam.Value

            ElseIf ItemClass = 4 Or ItemClass = 24 Then
                EquipItems.LeggingsEquip.Text = ItemNameParam.Value
                EquipItems.LeggingsQuality.SelectedItem = ItemQualityParam.Value

            ElseIf ItemClass = 5 Or ItemClass = 25 Then
                EquipItems.BootsEquip.Text = ItemNameParam.Value
                EquipItems.BootsQuality.SelectedItem = ItemQualityParam.Value

            ElseIf ItemClass = 6 Or ItemClass = 26 Then
                EquipItems.GauntletsEquip.Text = ItemNameParam.Value
                EquipItems.GauntletsQuality.SelectedItem = ItemQualityParam.Value

            ElseIf ItemClass = 29 Then
                If EquipItems.RRingEquip.Text = "None" Then
                    EquipItems.RRingEquip.Text = ItemNameParam.Value
                    EquipItems.RRingQuality.SelectedItem = ItemQualityParam.Value

                ElseIf EquipItems.RRingEquip.Text <> "None" And EquipItems.LRingEquip.Text = "None" Then
                    EquipItems.LRingEquip.Text = ItemNameParam.Value
                    EquipItems.LRingQuality.SelectedItem = ItemQualityParam.Value

                ElseIf EquipItems.RRingEquip.Text <> "None" And EquipItems.LRingEquip.Text <> "None" Then
                    Dim RingEquip As DialogResult = MessageBox.Show("Click Yes to equip to right hand, click No to equip to left hand", _
                                                                "Important Query", MessageBoxButtons.YesNoCancel)

                    If RingEquip = DialogResult.Yes Then
                        EquipItems.RRingEquip.Text = ItemNameParam.Value
                        EquipItems.RRingQuality.SelectedItem = ItemQualityParam.Value

                    ElseIf RingEquip = DialogResult.No Then
                        EquipItems.LRingEquip.Text = ItemNameParam.Value
                        EquipItems.LRingQuality.SelectedItem = ItemQualityParam.Value

                    End If
                End If

            ElseIf ItemClass = 30 Then
                EquipItems.NecklaceEquip.Text = ItemNameParam.Value
                EquipItems.NecklaceQuality.SelectedItem = ItemQualityParam.Value

            ElseIf ItemClass = 31 Then
                EquipItems.EarringEquip.Text = ItemNameParam.Value
                EquipItems.EarringQuality.SelectedItem = ItemQualityParam

            ElseIf ItemClass = 8 Or ItemClass = 10 Or ItemClass = 11 Or ItemClass = 13 Or ItemClass = 16 Or ItemClass = 17 Or ItemClass = 18 Then
                Dim WepEquip As DialogResult = MessageBox.Show("Click Yes to equip to right hand, click No to equip to left hand", _
                                                                "Important Query", MessageBoxButtons.YesNoCancel)

                If WepEquip = DialogResult.Yes Then
                    EquipItems.RWeaponEquip.Text = ItemNameParam.Value

                ElseIf WepEquip = DialogResult.No Then
                    EquipItems.LWeaponEquip.Text = ItemNameParam.Value

                ElseIf WepEquip = DialogResult.Cancel Then

                End If

            ElseIf ItemClass = 9 Or ItemClass = 12 Or ItemClass = 14 Or ItemClass = 15 Then
                EquipItems.RWeaponEquip.Text = ItemNameParam.Value
                EquipItems.LWeaponEquip.Text = ItemNameParam.Value
                EquipItems.RWeaponQuality.Text = ItemQualityParam.Value
                EquipItems.LWeaponQuality.Text = ItemQualityParam.Value

            ElseIf ItemClass = 19 Or ItemClass = 20 Or ItemClass = 21 Then
                EquipItems.LWeaponEquip.Text = ItemNameParam.Value
                EquipItems.LWeaponQuality.SelectedItem = ItemQualityParam

            Else

                For Each i As ListViewItem In ItemBagList.SelectedItems
                    i.Remove()
                Next

            End If
        Next
    Next
End If

解决方案

OLEDb parameterized queries are a little different to SQLClient queries. This is to keep them generic for other connection drivers.

Read this article to find out more
Parameters - SqlCommand vs. OledbCommand and OdbcCommand[^]

good luck ^_^


UPDATE: OP has corrected the parameters but still gets error:

You are adding parameters but you need to give them values too:

Dim ItemNameParam As New OleDbParameter("?", OleDbType.VarChar)
//I can't check the syntax as I'm at home, but something like:
ItemNameParam.Value = "SomeString";
ItemSelect.Parameters.Add(ItemNameParam)




This solution did answer the original question, but here's the solution to the latest issue:
ItemNameParam.Value = item.SubItems(0) does not work.

SubItems(0) is a ListViewItem.ListViewSubItem.[^] To get the displayed value you should use the Text property:

"ItemNameParam.Value = item.SubItems(0).Text


这篇关于@Parameter没有默认值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆