2016-06-30 7 views
0

ImはVB.NETにはかなり新しく、このエラーを修正する方法が不思議でした。 ExecuteScalarメソッドは、任意のパラメータを期待していませんアクセス可能な「ExecuteScalar」がこの数の引数を受け入れないため、オーバーロードの解決に失敗しました

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") 
+0

メッセージは、それが言うことを意味します - 何のCommandBehavior Argまたはあなたはそれが混乱(またはから貼り付け)を有していてもよいExecuteScalar' 'に許さ任意の引数はありません御馳走を作品'はExecuteReader() 'メソッド – Plutonix

答えて

0

。 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の内容を変更し、最後の名前でループが終了することに注意してください。

+0

はあなたに感謝しますあなたの助けに。 –

0

ExecuteScalarは変数を受け入れません(documentation参照)。回線をobjDR = Cmd.ExecuteScalarに変更してください。

0

エラーと同じように、多くの引数を受け取るExecuteScalarのオーバーロードはありません。 Or any arguments。代わりに:

objDR = Cmd.ExecuteScalar() 

それとも、あなたは結果をループすることを意図しているとスカラーは、結果セットではないので、ExecuteReaderを使用することを意味しましたか?

objDR = Cmd.ExecuteReader(CommandBehavior.CloseConnection) 
関連する問題