参数化字段名称

时间:2014-02-05 02:28:31

标签: sql .net vb.net ms-access

我在想这是否会奏效:

Dim query As String = "UPDATE tblPiglets SET @to=@todate, CurrentLocation=@to" & _
        " WHERE Week=@week AND SowOrder=@so AND PigletNumber=@pig"

但我抓住了Cannot update @to field lol
@to是一个变量,我认为它的价值与它的价值相同但值得一试。它的值取决于用户输入,那么,有没有其他方法可以做到这一点? 或这个? (不确定这是否会起作用):

Dim to As String = "foo"
Dim query As String = "UPDATE tblPiglets SET " & to & "=@todate, CurrentLocation=@to" & _
        " WHERE Week=@week AND SowOrder=@so AND PigletNumber=@pig"

2 个答案:

答案 0 :(得分:1)

最好使用参数将用户输入插入SQL代码,但参数只能用于值,而不能用于标识符。将SQL参数与VB方法中的参数相同。您不能使用方法参数指定要使用的属性或方法,也不能使用SQL参数指定列或表。

您别无选择,只能使用字符串连接,但这样做会打开SQL注入,因此请确保用户无法插入任意SQL代码。如果它是列名,那么他们必须从您从数据库本身检索到的列表中选择它,这样才能保证它是一个有效的列。

答案 1 :(得分:0)

我已使用选项2使其正常工作。

Dim to As String = "foo"
Dim query As String = "UPDATE tblPiglets SET " & to & "=@todate, CurrentLocation=@to" & _
    " WHERE Week=@week AND SowOrder=@so AND PigletNumber=@pig"

但是,如果我将使用第一个选项,我会得到相同的结果会更好。感谢