-1

更新ステートメントに問題があります。これは私のvb.netサーバー側のコードです:

Public Function UpdateRow() As DataTable

    Dim query As String = "Update Intranet.dbo.Gn_ISCoordinators SET cUserName='" & tbUsername.Text.Trim() &
        "',lDeptUser=" & CByte(rblDept.SelectedIndex) & " WHERE cUserName=" & "'" & Session("Edit") & "'"
    Dim hehe As DataTable = New DataTable()
    Using adapter1 = New SqlDataAdapter(query, ConfigurationManager.ConnectionStrings("IntranetConnectionString").ConnectionString)
        adapter1.Fill(hehe)
        Response.Redirect("~/Home.aspx")
        Session("Edit") = Nothing
        Return hehe
    End Using

End Function

そして、私はそれをここで呼んでいます:

Protected Sub btnSubmit_Click(sender As Object, e As System.EventArgs) Handles btnSubmit.Click
If Not Session("Edit") Is Nothing Then
        UpdateRow()
End If

textbox からデータを取得し、RadioButtonList からデータを取得し、データベース上のデータで更新するクエリが必要です。私の状況でSession("Edit")は、テキストボックスのテキストに置き換えたいフィールドと同じです。ボタンを押しても変化がありません。問題はどこにありますか?

私を助けてください。

事前にサンクス。

4

1 に答える 1

1

更新クエリを実行しています。ExecuteNonQuery を使用して実行する必要があります。アダプターの Fill コマンドは、データベースからデータを読み取り、書き込みません。そしてあなたのデータはデータベースにありません

Public Function UpdateRow() As DataTable

    Dim query As String = "Update Intranet.dbo.Gn_ISCoordinators SET cUserName=@uname" +  
                          ",lDeptUser=@dept WHERE cUserName=@oldName"
    Using con = new SqlConnection(ConfigurationManager.ConnectionStrings("IntranetConnectionString").ConnectionString)    
         con.Open()
         Dim cmd = new SqlCommand(query, con)
         cmd.Parameters.AddWithValue("@uname", tbUsername.Text.Trim())
         cmd.Parameters.AddWithValue("@dept", CByte(rblDept.SelectedIndex))
         cmd.Parameters.AddWithValue("@oldname", Session("Edit"))
         cmd.ExecuteNonQuery()
    End Using
End Function

また、SQL コマンドを形成するために文字列を連結してはならないことにも注意してください。このアプローチは、Sqlインジェクションと呼ばれる非常に深刻なセキュリティ問題につながります。

于 2013-03-20T08:30:04.470 に答える