如果我从插入或更新语句返回ORA-12899。如何在不解析字符串的情况下从OracleException中提取列名?
ORA-12899:列“SCHEMA”的值太大。“TABLENAME”。“COLUMNNAME”(实际:175,最大值:23)。
我想做这样的事情:
try
{
// Insert code.
}
catch (OracleException orclEx)
{
if (orclEx.Number == 12899)
{
string columnName = GetColumnName(orclEx);
throw new Exception(columnName + " value is too long.", orclEx);
}
}
finally
{
// Finally code
}
答案 0 :(得分:0)
我不知道如何在不解析错误消息的情况下执行此操作。 我试图防止坏数据首先进入数据库。 因此,在ASP.NET表单中,我使用这样的正则表达式验证器。 这个可以防止你传递超过100个字符。 您可以键入超过100个字符,但是当您点击“确定”或“提交”按钮时,它将不会处理数据,直到您缩短输入。
此外,我使用验证摘要来显示ErrorMessage。
<asp:RegularExpressionValidator ID="regExpInspectionNotes" runat="server" SetFocusOnError="true" Text="*" ControlToValidate="txtInspectionNotes" ErrorMessage= "Maximum length of inspection notes is 100 characters." ValidationExpression="^[\s\S]{1,100}$" Display="Dynamic"> </asp:RegularExpressionValidator>
此外,我将值传递给存储过程并使用PL / SQL进行更新。
就解析错误消息而言,通过解析获取列名真的不会太难。