select语句

时间:2015-07-24 10:39:53

标签: sql database select code-injection

我想从我的数据库中获取相同的值,因此我正在使用此查询:

SELECT NormalComputers 
FROM usb_compliance 
WHERE ATC = 'CMB' 
ORDER BY date DESC 
    OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY

使用这个我想得到这么多的值所以我打算使用SQL注入方法请帮我如何创建这个

如果我可以使用注射方法,我可以使用它应该是这样的功能

Private Function query(ByVal values As String, ByVal atc As String, ByVal no As Integer)
    Dim connetionString As String
    Dim connection As SqlConnection
    Dim command As SqlCommand
    Dim sql As String
    connetionString = "Server=CTV-WEBDEVEXG;Database=usb;Trusted_Connection=True;"
    sql = "SELECT @values FROM usb_compliance WHERE ATC=@atc ORDER BY date DESC OFFSET @no ROWS FETCH NEXT 1 ROWS ONLY"
    connection = New SqlConnection(connetionString)
    Try
        command = New SqlCommand(sql, connection)
        With command
            .Connection.Open()
            MsgBox("done !!!")
            .CommandType = CommandType.Text
            .Parameters.Add("@values", SqlDbType.DateTime).Value = values
            .Parameters.Add("@atc", SqlDbType.NVarChar).Value = atc
            .Parameters.Add("@NormalComputers", SqlDbType.Int).Value = no
        End With

        command.ExecuteNonQuery()
        command.Dispose()
        connection.Close()

    Catch ex As Exception

    End Try
    Return sql
End Function

我试过这种方式,但它不起作用所以请帮助我

1 个答案:

答案 0 :(得分:0)

参数@values是指您要检索的字段的名称。所以它应该是一个字符串而不是DateTime(尽管这个字段的数据类型可能是DateTime)。

...
.Parameters.Add("@values", SqlDbType.NVarChar).Value = values
...  

让行受影响:

Dim numRows as Integer
...
..
numRows=command.ExecuteNonQuery()