ASP.NET 带有按钮的 Gridview 列 CommandArgument 错误,ORA-01722:数字无效
ASP.NET Gridview column with button CommandArgument Error, ORA-01722: invalid number
我在 ASP.NET Gridview 中添加了一个按钮列,
<Columns>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="btnBlacklist" runat="server" CausesValidation="false" CommandName="Pass"
Text="PASS" CommandArgument ='<%# Eval("ACCOUNT_ID")%>'/>s
</ItemTemplate>
</asp:TemplateField>
</Columns>
在后面的代码中,像这样添加了触发事件,
Protected Sub gTransReport_RowCommand(sender As Object, e As GridViewCommandEventArgs)
If e.CommandName = "Pass" Then
Dim accountId As Integer = Convert.ToInt32(e.CommandArgument)
DbConn = New OleDbConnection()
Try
dbdll.ConnectDB(connString, DbConn)
If DbConn.State <> ConnectionState.Open Then
DbConn.Open()
End If
Catch ex As Exception
ClassMC.putToErrorLog("[" & Session("USER").ToString().Trim & "] " & ex.Message & ex.StackTrace)
Session("ERRORDESC") = ex.Message & " " & ex.StackTrace
Page.Response.Redirect("ZapError.aspx")
End Try
Try
Using dbCommand As New OleDbCommand("UPDATE AML_INDIVIDUAL_PERCENTAGE SET SECOND_NAME = 'PASS' WHERE ACCOUNT_ID = '@accountID'", DbConn)
dbCommand.Parameters.AddWithValue("@accountID", accountId)
dbCommand.CommandType = CommandType.Text
dbCommand.ExecuteNonQuery()
End Using
Catch ex As Exception
ClassMC.putToErrorLog("[" & Session("USER").ToString().Trim & "] " & ex.Message & ex.StackTrace)
Session("ERRORDESC") = ex.Message & " " & ex.StackTrace
Page.Response.Redirect("ZapError.aspx")
Finally
DbConn.Close()
End Try
lblBlacklist.Text = "User passed!!"
End If
End Sub
带有报表的 GridView 显示正常,但是当我单击“通过”按钮时,ORA-01722: invalid number
出现错误。我的数据库架构 ACCOUNT_ID
是 NUMBER
。我已经调试了我的代码,但不知道为什么会抛出这个错误,求助。
不要像这里那样用撇号包裹参数:
WHERE ACCOUNT_ID = '@accountID'
改为:
WHERE ACCOUNT_ID = @accountID
否则字符串 @accountID
将用作不是数字的 accountID 的值。
更新: afaik in oracle
WHERE ACCOUNT_ID = :accountID
我在 ASP.NET Gridview 中添加了一个按钮列,
<Columns>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:Button ID="btnBlacklist" runat="server" CausesValidation="false" CommandName="Pass"
Text="PASS" CommandArgument ='<%# Eval("ACCOUNT_ID")%>'/>s
</ItemTemplate>
</asp:TemplateField>
</Columns>
在后面的代码中,像这样添加了触发事件,
Protected Sub gTransReport_RowCommand(sender As Object, e As GridViewCommandEventArgs)
If e.CommandName = "Pass" Then
Dim accountId As Integer = Convert.ToInt32(e.CommandArgument)
DbConn = New OleDbConnection()
Try
dbdll.ConnectDB(connString, DbConn)
If DbConn.State <> ConnectionState.Open Then
DbConn.Open()
End If
Catch ex As Exception
ClassMC.putToErrorLog("[" & Session("USER").ToString().Trim & "] " & ex.Message & ex.StackTrace)
Session("ERRORDESC") = ex.Message & " " & ex.StackTrace
Page.Response.Redirect("ZapError.aspx")
End Try
Try
Using dbCommand As New OleDbCommand("UPDATE AML_INDIVIDUAL_PERCENTAGE SET SECOND_NAME = 'PASS' WHERE ACCOUNT_ID = '@accountID'", DbConn)
dbCommand.Parameters.AddWithValue("@accountID", accountId)
dbCommand.CommandType = CommandType.Text
dbCommand.ExecuteNonQuery()
End Using
Catch ex As Exception
ClassMC.putToErrorLog("[" & Session("USER").ToString().Trim & "] " & ex.Message & ex.StackTrace)
Session("ERRORDESC") = ex.Message & " " & ex.StackTrace
Page.Response.Redirect("ZapError.aspx")
Finally
DbConn.Close()
End Try
lblBlacklist.Text = "User passed!!"
End If
End Sub
带有报表的 GridView 显示正常,但是当我单击“通过”按钮时,ORA-01722: invalid number
出现错误。我的数据库架构 ACCOUNT_ID
是 NUMBER
。我已经调试了我的代码,但不知道为什么会抛出这个错误,求助。
不要像这里那样用撇号包裹参数:
WHERE ACCOUNT_ID = '@accountID'
改为:
WHERE ACCOUNT_ID = @accountID
否则字符串 @accountID
将用作不是数字的 accountID 的值。
更新: afaik in oracle
WHERE ACCOUNT_ID = :accountID