我已经像这样向数据表添加了唯一约束
DataTable dtemp
private void TempTable()
{
dtemp = new DataTable("Temp");
dtemp.Columns.Add(new DataColumn("Table", typeof(int)));
dtemp.Columns.Add(new DataColumn("Capacity", typeof(int)));
UniqueConstraint TableUnique = new UniqueConstraint(new DataColumn[] { dtemp.Columns["Table"] });
dtemp.Constraints.Add(TableUnique);
}
当我尝试添加相同的记录时,它不会去 catch 块,而是会突然退出程序并在视觉工作室中给出唯一的约束未处理的异常。
private void GetTable()
{
try
{
dtemp.Rows.Add(mTable.TableID,mTable.Capacity);
}
catch(SqlException ee)
{
if (ee.Number == 2627)
{
MessageBox.Show("Sorry, This Table Is Already Reserved!");
if (Con.State == ConnectionState.Open) { Con.Close(); }
return;
}
MessageBox.Show("Exception: " + ee.Message);
}
谁能告诉我如何处理这个异常?
由于您已经在本地定义了约束DataTable
,您试图捕获错误类型的异常。代替SqlException
, a ConstraintException https://msdn.microsoft.com/en-us/library/system.data.constraintexception%28v=vs.110%29.aspx被抛出。
立即解决的方法是更改您的异常类型try
clause:
try
{
dtemp.Rows.Add(mTable.TableID,mTable.Capacity);
}
catch (ConstraintException ee)
{
// handle the exception here
}
如果您想检查数据库中的约束,那么您需要在数据库中定义它,而不是在DataTable
。在这种情况下,SqlException
会被抛出,但仅当您将数据发送到数据库时,而不是当您向数据库添加行时DataTable
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)