重载决策失败,因为没有可访问的“ExecuteScalar”'接受这个数量的论点

时间:2016-06-30 15:11:18

标签: vb.net

我是VB.NET的新手,想知道我是如何解决这个错误的。

CODE

 Dim sql As String = "SELECT (USER) FROM USER_CONSTANT"
    Dim conn As New SqlConnection(strConn)
    Dim objDR As SqlDataReader
    Dim Cmd As New SqlCommand(sql, conn)
    conn.Open()
    objDR = Cmd.ExecuteScalar(CommandBehavior.CloseConnection)
    While objDR.Read()
        Label7.Text = objDR("USER")

3 个答案:

答案 0 :(得分:0)

ExecuteScalar方法并不期望任何参数。 CommandBehavior枚举可以传递给ExecuteReader方法,所以我想你的代码应该写成

Dim sql As String = "SELECT (USER) FROM USER_CONSTANT"
Using conn = New SqlConnection(strConn)
Using Cmd = New SqlCommand(sql, conn)
    conn.Open()

    Using objDR = Cmd.ExecuteReader(CommandBehavior.CloseConnection)
       While objDR.Read()
          Label7.Text = objDR("USER")
       End While
    End Using
 End Using
 End Using

目前尚不清楚您是否希望从此代码中收到多条记录。如果返回了多个记录,请注意在每个循环中,您使用当前USER更改Label7.Text的内容,并且您的循环以显示的姓氏结束

答案 1 :(得分:0)

ExecuteScalar不接受任何变量(请参阅DiskIo_TypeGroup1)。只需将该行更改为objDR = Cmd.ExecuteScalar

答案 2 :(得分:0)

就像错误所说的那样,ExecuteScalar没有超载接受那么多的参数。 Or any arguments。代替:

objDR = Cmd.ExecuteScalar()

或者您的意思是使用ExecuteReader,因为您打算循环结果并且标量不是结果集?

objDR = Cmd.ExecuteReader(CommandBehavior.CloseConnection)