-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

我想要从文本框获取数据和从 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 Injection

于 2013-03-20T08:30:04.470 回答