2

やあ。最初のコードスニペットはテキストボックスの値をデータベースに挿入し、うまく機能します。

    Public Sub InsertintoTable(ByVal username As String, ByVal password As String)
        Dim adp As New SqlCommand("INSERT INTO [users_tbl] (usr_username,usr_password) values ('" & username & "','" & password & "')", con)
        adp.ExecuteNonQuery()
    End Sub



代わりに、AddWithValueを使用したいので、これを試してみます。

    Public Sub InsertintoTable(ByVal username As String, ByVal password As String)
        Using adp As New SqlCommand("INSERT INTO [users_tbl] (usr_username, usr_password) values (@username, @password)", con)
            adp.Parameters.AddWithValue("@usr_username", username)
            adp.Parameters.AddWithValue("@usr_password", password)
            adp.ExecuteNonQuery()
        End Using
    End Sub

しかし、残念ながら、エラーが発生します。

Exception Details: System.Data.SqlClient.SqlException: Must declare the scalar variable "@username".

なぜエラーですか?私のAddWithValueスニペットが間違っている可能性がありますか?

ありがとうございました。

4

2 に答える 2

5

パラメータ名は異なりますが、これは機能します:

adp.Parameters.AddWithValue("@username", username)
adp.Parameters.AddWithValue("@password", password)

またはSQLを変更します

INSERT INTO [users_tbl] (usr_username, usr_password) values (@username, @password)

INSERT INTO [users_tbl] (usr_username, usr_password) values (@usr_username, @usr_password)
于 2013-03-07T14:19:56.220 に答える
4

クエリは次の 2 つの変数を想定しています。

@username, @password

ただし、別の名前の変数を渡します。

adp.Parameters.AddWithValue("@usr_username", username)
adp.Parameters.AddWithValue("@usr_password", password)

パラメータ名は一致する必要があります。このようなもの:

adp.Parameters.AddWithValue("@username", username)
adp.Parameters.AddWithValue("@password", password)
于 2013-03-07T14:19:56.077 に答える