我正在使用 Visual Basic 并使用 OleDb 访问 Excel 电子表格。我正在将工作表中的数据导入我的 DataGridView,效果很好,但现在我正在过滤。在大多数情况下它工作得很好,但我正在尝试使用参数(“@p1”等),我遇到了一个非常奇怪的问题。
我可以有以下(不包括之前、中间和之后的一堆不相关的东西)
query = query & "Project" & " LIKE @Gah1"
...
MyCommand.SelectCommand.Parameters.AddWithValue("@Gah1", "%House%")
它给了我我正在寻找的结果。但我似乎无法获得列本身名称的参数,例如
query = query & "@Gah1" & " LIKE @Gah2"
...
MyCommand.SelectCommand.Parameters.AddWithValue("@Gah1", "Project")
MyCommand.SelectCommand.Parameters.AddWithValue("@Gah2", "%House%")
不起作用(并且我尝试将 Project 括在不同的括号中,并以不同的方式进行填充,但无法使其正常工作)。我找到了很多关于使用参数的示例,但没有一个使用它们来给出列名。
我猜测参数会改变字符串的表示方式,因为您不需要在字符串文字周围使用 ' '。不能在参数中给出列名吗?如果可以,我需要做什么?
好吧,它不会让我发表评论,所以在这里
a)糟糕,不,我猜不是 b)我最终在测试查询中发送的字符串查询是
"select * from [Bid Summary$] where @Gah1 LIKE @Gah2"
如果绝对需要,我可以发布该过程,但这不是问题,因为如果我将 @Gah1 替换为 Project 或 [Project],整个事情会非常好,所以我只是展示了我更改的行。我对参数化查询很陌生,你能解释一下如何避免使用它的查询字符串吗?如果有更好的方法来做我正在做的事情,我很乐意使用它 =) 感谢您的回复和编辑