我对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")
与我想用文本框的文本替换它的字段相同。当我按下按钮时它不会给我任何改变。究竟问题在哪里?
请帮帮我。
提前完成。
答案 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