使用AddWithValue插入 - 引发错误?

com*_*nce 2 sql database vb.net sql-server asp.net

你好.第一个代码片段将文本框值插入数据库,它运行良好:

    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
Run Code Online (Sandbox Code Playgroud)



相反,我想使用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
Run Code Online (Sandbox Code Playgroud)

但不幸的是它抛出一个错误:

Exception Details: System.Data.SqlClient.SqlException: Must declare the scalar variable "@username".
Run Code Online (Sandbox Code Playgroud)

为什么错误?我的AddWithValue片段可能错了吗?

谢谢.

Tim*_*ter 5

参数名称不同,这有效:

adp.Parameters.AddWithValue("@username", username)
adp.Parameters.AddWithValue("@password", password)
Run Code Online (Sandbox Code Playgroud)

或者更改sql

INSERT INTO [users_tbl] (usr_username, usr_password) values (@username, @password)
Run Code Online (Sandbox Code Playgroud)

INSERT INTO [users_tbl] (usr_username, usr_password) values (@usr_username, @usr_password)
Run Code Online (Sandbox Code Playgroud)