报错:已有打开的与此命令相关联的 DataReader,必须首先将它关闭。
在这个函数报错:UpdateTable(JewelleryDataSet changedData, String tableName, DateTime lastAccessed)代码如下:
public int UpdateTable(JewelleryDataSet changedData, string tableName, DateTime lastAccessed)
{
int ret = 0; string SqlInfo = "" ; try
{
if (changedData != null)
{
switch (tableName)
{
case "AcceptRegister":
ret = acceptRegisterTableAdapter.Update(changedData);
break; case "BaseInfo":
ret = baseInfoTableAdapter.Update(changedData);
break; case "Base":
ret = baseTableAdapter.Update(changedData);
break; case "Branch":
//Debugger.Break();
ret = branchTableAdapter.Update(changedData);
break; case "CheckResult":
ret = checkResultTableAdapter.Update(changedData);
break; case "Code":
ret = codeTableAdapter.Update(changedData);
break; case "CustomerInfo":
ret = customerInfoTableAdapter.Update(changedData);
break; case "DataMaintain":
ret = dataMaintainTableAdapter.Update(changedData);
break; case "DateInfo":
ret = dataInfoTableAdapter.Update(changedData);
break; case "GroupInfo":
ret = groupInfoTableAdapter.Update(changedData);
break; case "Print":
ret = printTableAdapter.Update(changedData);
break; case "Role":
ret = roleTableAdapter.Update(changedData);
break; case "User":
ret = userTableAdapter.Update(changedData);
break; case "UserRole":
ret = userRoleTableAdapter.Update(changedData);
break; case "Template":
ret = templateTableAdapter.Update(changedData);
break; case "StoneValue":
ret = StoneValueTableAdapter.Update(changedData);
break; case "StonePram":
ret = StonePramTableAdapter.Update(changedData);
break; case "PictrueArgs":
ret = pictrueArgsTableAdapter.Update(changedData);
break; case "DataUpdateInfo":
ret = dataUpdateInfoTableAdapter.Update(changedData);
break;
}
}
}
catch (SqlException sqlEx)
{
log.Debug(string.Format("A problem was encounted updating Table: \n{0}", sqlEx.ToString()));
throw new SoapException("写入数据库出错", SoapException.ServerFaultCode, "Database");
}
catch (Exception ex)
{
log.Debug("行数量" + changedData.CheckResult.Rows.Count.ToString()
+ "行状态:" + changedData.CheckResult.Rows[0].RowState.ToString()
+ "重量:" + changedData.CheckResult.Rows[0]["Weight"].ToString()
+ "图片编号:" + changedData.CheckResult.Rows[0]["PhotoGID"].ToString());
log.Debug("Exception:" + ex.ToString());
} return ret;
}
在这个函数报错:UpdateTable(JewelleryDataSet changedData, String tableName, DateTime lastAccessed)代码如下:
public int UpdateTable(JewelleryDataSet changedData, string tableName, DateTime lastAccessed)
{
int ret = 0; string SqlInfo = "" ; try
{
if (changedData != null)
{
switch (tableName)
{
case "AcceptRegister":
ret = acceptRegisterTableAdapter.Update(changedData);
break; case "BaseInfo":
ret = baseInfoTableAdapter.Update(changedData);
break; case "Base":
ret = baseTableAdapter.Update(changedData);
break; case "Branch":
//Debugger.Break();
ret = branchTableAdapter.Update(changedData);
break; case "CheckResult":
ret = checkResultTableAdapter.Update(changedData);
break; case "Code":
ret = codeTableAdapter.Update(changedData);
break; case "CustomerInfo":
ret = customerInfoTableAdapter.Update(changedData);
break; case "DataMaintain":
ret = dataMaintainTableAdapter.Update(changedData);
break; case "DateInfo":
ret = dataInfoTableAdapter.Update(changedData);
break; case "GroupInfo":
ret = groupInfoTableAdapter.Update(changedData);
break; case "Print":
ret = printTableAdapter.Update(changedData);
break; case "Role":
ret = roleTableAdapter.Update(changedData);
break; case "User":
ret = userTableAdapter.Update(changedData);
break; case "UserRole":
ret = userRoleTableAdapter.Update(changedData);
break; case "Template":
ret = templateTableAdapter.Update(changedData);
break; case "StoneValue":
ret = StoneValueTableAdapter.Update(changedData);
break; case "StonePram":
ret = StonePramTableAdapter.Update(changedData);
break; case "PictrueArgs":
ret = pictrueArgsTableAdapter.Update(changedData);
break; case "DataUpdateInfo":
ret = dataUpdateInfoTableAdapter.Update(changedData);
break;
}
}
}
catch (SqlException sqlEx)
{
log.Debug(string.Format("A problem was encounted updating Table: \n{0}", sqlEx.ToString()));
throw new SoapException("写入数据库出错", SoapException.ServerFaultCode, "Database");
}
catch (Exception ex)
{
log.Debug("行数量" + changedData.CheckResult.Rows.Count.ToString()
+ "行状态:" + changedData.CheckResult.Rows[0].RowState.ToString()
+ "重量:" + changedData.CheckResult.Rows[0]["Weight"].ToString()
+ "图片编号:" + changedData.CheckResult.Rows[0]["PhotoGID"].ToString());
log.Debug("Exception:" + ex.ToString());
} return ret;
}
Exception:System.InvalidOperationException: 已有打开的与此命令相关联的 DataReader,必须首先将它关闭。
在 System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
在 System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
在 System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
在 System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
在 System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)
在 JewelleryDataSetTableAdapters.CheckResultTableAdapter.Update(JewelleryDataSet dataSet)
在 Jewellery.Web.JewelleryData.UpdateTable(JewelleryDataSet changedData, String tableName, DateTime lastAccessed)
表示其他地方用到datareader了,记着把它关闭
跟踪这个方法 进去看看...
如果你的DBHelper方法封装的不好的话,修改数据的方法执行错误后,会出现未关闭DataReader错误