当我在 btnRefresh 单击时调用 loadDatas()没有问题,但是用sendCommand("QUERY",null);从父窗体调时出现错误未处理的“System.Data.ConstraintException”类型的异常出现在 system.data.dll 中。其他信息: 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。代码一:
=============================
private void loadDatas()
{
try
{
// 打开连接。
this.sqlConnection1.Open();
// 在填充数据集前关闭约束检查。
// 这允许适配器填充数据集而不用考虑表之间的依赖项。
this.dsRentType1.EnforceConstraints = false;
this.dsRentType1.Clear();
this.sqlDataAdapter1.Fill(this.dsRentType1);
}
catch (System.Exception eLoad)
{
// 在此处添加错误处理代码。
// 显示错误信息(如果有)。
System.Windows.Forms.MessageBox.Show(eLoad.Message);
}
finally
{
// 重新打开约束检查。
dsRentType1.EnforceConstraints = true;
// 无论是否引发了异常都关闭连接。
this.sqlConnection1.Close();
}
//设置默认值
setDefaultValue();
}
代码二:
=============================
#region ICommandToChildren 成员 public int sendCommand(string commandType, ArrayList alCommand)
{
// TODO: 添加 FormBooks.sendCommand 实现
this.Focus();
switch(commandType)
{
case "QUERY":
loadDatas();
break;
case "NEW":
loadDatas();
break;
case "SAVE":
saveDatas();
break;
case "CANCEL":
cancelAll();
break;
case "LOV:STATUS":
al1 = alCommand;
MessageBox.Show(al1[0].ToString());
break;
default:
break;
}
return 0;
} #endregion
代码三:
=============================
private void btnRefresh_Click(object sender, System.EventArgs e)
{
loadDatas();
}=============================
=============================
private void loadDatas()
{
try
{
// 打开连接。
this.sqlConnection1.Open();
// 在填充数据集前关闭约束检查。
// 这允许适配器填充数据集而不用考虑表之间的依赖项。
this.dsRentType1.EnforceConstraints = false;
this.dsRentType1.Clear();
this.sqlDataAdapter1.Fill(this.dsRentType1);
}
catch (System.Exception eLoad)
{
// 在此处添加错误处理代码。
// 显示错误信息(如果有)。
System.Windows.Forms.MessageBox.Show(eLoad.Message);
}
finally
{
// 重新打开约束检查。
dsRentType1.EnforceConstraints = true;
// 无论是否引发了异常都关闭连接。
this.sqlConnection1.Close();
}
//设置默认值
setDefaultValue();
}
代码二:
=============================
#region ICommandToChildren 成员 public int sendCommand(string commandType, ArrayList alCommand)
{
// TODO: 添加 FormBooks.sendCommand 实现
this.Focus();
switch(commandType)
{
case "QUERY":
loadDatas();
break;
case "NEW":
loadDatas();
break;
case "SAVE":
saveDatas();
break;
case "CANCEL":
cancelAll();
break;
case "LOV:STATUS":
al1 = alCommand;
MessageBox.Show(al1[0].ToString());
break;
default:
break;
}
return 0;
} #endregion
代码三:
=============================
private void btnRefresh_Click(object sender, System.EventArgs e)
{
loadDatas();
}=============================
解决方案 »
- 大家来看一看这个神奇的问题(绝对,绝对神奇;连if else 都几乎被颠覆了),我实在是木有办法了(关于线程安全的)
- C#如何将#ff0000这种颜色转换为:255,0,0这种格式的。。。。求高手
- 如何把工程中的注释代码生成XML文件
- .net中类似vc下一窗口多视图的问题
- @@@@@@@@@@@@@@@@@@@@一个简单的问题
- 没分了,好有人回答我的问题吗?郁闷中
- 在C#中如何使用APIVirtualQueryEx,
- 如何限制登录时间
- 想获得任务栏中所有打开窗口的窗口标题和托盘运行程序的程序标题或进程句柄
- 初学者的求助
- 莫名其妙的错误:在我添加类和方法的时候,出现的错误提示“目录没有写权限”
- VS.NET 2005 Beta2的怪问题
dsRentType1.EnforceConstraints = true如果原来执行出错,出现了重复或NULL主键,你在finally再这样设置肯定会出错!
数据没有问题。
如果在此窗体上直接放一个按钮,然后在按钮事件中调用loadDatas();一点问题都没有。另外把
// 重新打开约束检查。
dsRentType1.EnforceConstraints = true;
这段代码注释后,运行也不会出问题