在vb.net中更新查询不起作用

时间:2013-03-20 07:27:30

标签: vb.net sql-update

我对update语句有疑问。这是我的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")与我想用文本框的文本替换它的字段相同。当我按下按钮时它不会给我任何改变。究竟问题在哪里?

请帮帮我。

提前完成。

1 个答案:

答案 0 :(得分: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