是否可以在SQL更新语句中对列进行修剪?基本上,一旦在我的gridview上单击按钮,我希望它从左侧修剪10个字符,用于列" Status"对于在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
答案 0 :(得分:0)
有关如何修剪字符串的信息,请参见下文。这不回答如何在Sql中选择正确的记录。您需要弄清楚表中的标识符,并确保您的数据网格使用相同的标识符。理想情况下,标识符是表的主键。然后使用参数化查询将其作为WHERE子句中的参数传递。
请参阅sql的SubString方法。你的SQL查询将是
saveQuery = "INSERT INTO MasterClientChemicals ";
saveQuery += "(ClientID, CompanyName, MSDS, [MFR NAME], [PROD NAME], [MAX WT], CONT, AREA, [CAS #], [%], [CHEM NAME], [NFPA/FPRACH/GLOES], [Client MSDS], ";
saveQuery += "[Chem % Min], PS, [Specific Gravity], Density, DOT, UFC, [AIR TITLE I VOC PERCENT], [AIR TITLE I VOC VOL], [AIR TITLE I VOC WEIGHT], [Status Date]) ";
saveQuery += "VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17, @18, @19, @20, @21, @22)";
db.Execute(saveQuery, clientID, companyName, CMPMSDS, CMPMFRNAME, CMPPRODNAME, CMPMAXWT, CMPCONT, CMPAREA, CMPCASNumber, CMPPercent, CMPCHEMNAME, NFPAFPRACHGLOES, CMPClientMSDS, CMPChemMin, CMPPS, CMPSpecificGravity, CMPDensity, CMPDOT, CMPUFC, CMPVOCPercent, CMPVOCVolume, CMPVOCWeight, CMPStatusDate);
var newID = db.GetLastInsertId();
我添加了一个长度检查,以确保在少于10个字符可用时不会出现异常,在这种情况下会返回空字符串。
其他要点
UPDATE tbltest
SET Status = SubString(Status, 0, CASE WHEN LEN(Status) >= 10 THEN 10 ELSE LEN(Status) END)
where TablePkColumn = @myPkParameter
块中,以便在完成连接后始终关闭连接。或者,使用using
块关闭连接。