【发布时间】:2016-08-11 21:19:16
【问题描述】:
是否可以对 SQL 更新语句中的列进行修剪?基本上,一旦在我的 gridview 上单击按钮,我希望它从左侧修剪 10 个字符,用于列“状态”在我在下面为 gridview 上选择的列使用的范围内是否可能?
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
If (e.CommandName = "Unlock") Then
Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = GridView1.Rows(index)
Try
Dim Con As SqlConnection
Dim cmd As SqlCommand
Con = New SqlConnection
Con.ConnectionString = "Data Source="
Con.Open()
cmd = New SqlCommand
cmd.Connection = Con
'''''Can I trim the status column 10 characters where it is the selected row?'''''''''''
cmd.CommandText = "UPDATE tbltest SET Status = '" & ?????? & "' where row = '" & ???????? & "';"
cmd.ExecuteNonQuery()
Catch ex As System.Exception
End Try
End If
End Sub
【问题讨论】:
-
您只想修剪这一行?什么是主键?
-
这是我的问题的一部分,我该如何确保它修剪了在 gridview 上单击按钮的正确行?可以有 10 行,每行 10 个解锁按钮
-
您有 GridViewRow,您可以将 PK 信息存储在
TemplateField中的(隐藏)控件中,然后通过row.FindControl("ControlID")获取。或者你可以get it viaDataKeys。然后更改您的 sql 查询以使用 sql-parameters(主要是修复您的 sql 注入漏洞)。然后你可以使用这样的 sql:UPDATE tbltest SET Status=RIGHT(Status, LEN(Status) - 10) WHERE ID=@ID