0

ユーザーが自分のユーザー名を書いてボタンリストから選択するフォームを作成しています。挿入する前に、ユーザー名が既に存在するかどうかを確認する必要があります。サーバー側のコードは次のとおりです。

Protected Sub btnSubmit_Click(sender As Object, e As System.EventArgs) Handles btnSubmit.Click
    'Duplicate username
    Dim username As String = tbUsername.Text.Trim()
    Dim tempUser As Byte = CByte(rblDept.SelectedIndex)
    Dim query1 As String = "Select cUserName FROM Intranet.dbo.Gn_ISCoordinators WHERE cUserName = @cUserName"

    Dim haha As DataTable = New DataTable()
    Using adapter = New SqlDataAdapter(query1, ConfigurationManager.ConnectionStrings("IntranetConnectionString").ConnectionString)
        adapter.Fill(haha)
        If haha.Rows.Count <> 0 Then
            lblmessage.Text = "Error! user name is already exist"
            Return
        End If
    End Using

    'Insert new user
    Dim query As String = "Insert into Intranet.dbo.Gn_ISCoordinators (cUserName,lDeptUser) Values ('" & username & "'," & tempUser & ")"
    Dim hehe As DataTable = New DataTable()
    Using adapter1 = New SqlDataAdapter(query, ConfigurationManager.ConnectionStrings("IntranetConnectionString").ConnectionString)
        adapter1.Fill(hehe)
        lblmessage.Text = "User has been added"
    End Using
End Sub

したがって、ユーザーがボタンを押すと、最初に重複したユーザー名がチェックされ、問題がなければ行が挿入されます。ところで、送信ボタンを押すとエラーが発生し、オンラインでこれが表示Must declare the scalar variable "@cUserName".されましadapter.Fill(haha)た。

私のコードの何が問題なのか知りたいです。助けて

前もって感謝します。

4

2 に答える 2

1

エラー メッセージには、その問題を解決するために知っておく必要があるすべての情報が表示されます。@cUserNameクエリでパラメーターを使用していますが、設定されていません。

Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("IntranetConnectionString").ConnectionString)
conn.Open()

Dim query1 As String = "Select cUserName FROM Intranet.dbo.Gn_ISCoordinators WHERE cUserName = @cUserName"

Dim command As New SqlCommand(query1, conn )
Dim param As New SqlParameter()
param.ParameterName = "@cUserName"
param.Value = username 
command.Parameters.Add(param)

Using adapter = New SqlDataAdapter(command)
于 2013-03-14T05:39:35.253 に答える
1

パラメータ @cUserName を使用していますが、初期化も値の受け渡しもしていません。

Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("IntranetConnectionString").ConnectionString)
conn.Open()

Dim query1 As String = "Select cUserName FROM Intranet.dbo.Gn_ISCoordinators WHERE cUserName = @cUserName"

Dim command As New SqlCommand(query1, conn)
command.Parameters.AddWithValue("@cUserName",username)

Using adapter = New SqlDataAdapter(command)
于 2013-03-14T05:53:30.807 に答える