c# - SQL Connection(C#)-Executenonquery 需要一个打开且可用的连接。连接当前状态为关闭
问题描述
我在生产服务器中随机收到此错误。当我在我的视觉工作室中执行解决方案时,没有收到此错误。我在日志文件中捕获所有异常。我收到了这个错误。而且我在执行非查询之前打开了一个连接。我已经使用 SQL 连接语句在里面编写了 executenonquery。
try
{
try
{
Globale.OpenConnection();
foreach (DataRow dr in dt.Rows)
{
if (string.IsNullOrEmpty(dr["SubsRateCode"].ToString()))
{
continue;
}
cmd = new SqlCommand("Sp_EstSubsRateDetail", conn, tn)
{
CommandType = CommandType.StoredProcedure
};
cmd.Parameters.AddWithValue("@EstSubsRateID", Globale.ConvertObjectToInteger(dr["EstSubsRateID"]));
cmd.Parameters.AddWithValue("@EstimationID", oclsEstimationEntity.EstimationID);
cmd.Parameters.AddWithValue("@EstCode", oclsEstimationEntity.EstCode);
cmd.Parameters.AddWithValue("@ProductDetailID", oclsEstimationEntity.ProductDetailID);
cmd.Parameters.AddWithValue("@EnqID", oclsEstimationEntity.EnqID);
cmd.Parameters.AddWithValue("@EnqCode", oclsEstimationEntity.EnqCode);
cmd.Parameters.AddWithValue("@Category", dr["Category"].ToString());
cmd.Parameters.AddWithValue("@PrdGroup", dr["PrdGroup"].ToString());
cmd.Parameters.AddWithValue("@PrdType", dr["PrdType"].ToString());
cmd.Parameters.AddWithValue("@SubsRateCode", dr["SubsRateCode"].ToString());
cmd.Parameters.AddWithValue("@AdhesiveType", dr["AdhesiveType"].ToString());
cmd.Parameters.AddWithValue("@LinerType", dr["LinerType"].ToString());
cmd.Parameters.AddWithValue("@SupCode", dr["SupCode"].ToString());
cmd.Parameters.AddWithValue("@SubItemCode", dr["SubItemCode"].ToString());
cmd.Parameters.AddWithValue("@MasterPrice", Globale.ConvertObjectToDecimal(dr["MasterPrice"]));
cmd.Parameters.AddWithValue("@MstSelect", Globale.ConvertObjectToInteger(dr["MstSelect"]));
cmd.Parameters.AddWithValue("@WaccPrice", Globale.ConvertObjectToDecimal(dr["WaccPrice"]));
cmd.Parameters.AddWithValue("@WcSelect", Globale.ConvertObjectToInteger(dr["WcSelect"]));
cmd.Parameters.AddWithValue("@ManualPrice", Globale.ConvertObjectToDecimal(dr["ManualPrice"]));
cmd.Parameters.AddWithValue("@MnpSelect", Globale.ConvertObjectToInteger(dr["MnpSelect"]));
cmd.Parameters.AddWithValue("@MetersRoll", Globale.ConvertObjectToDecimal(dr["MetersRoll"]));
cmd.Parameters.AddWithValue("@Width", Globale.ConvertObjectToDecimal(dr["Width"]));
cmd.Parameters.AddWithValue("@SubRemark", dr["SubRemark"].ToString());
cmd.Parameters.AddWithValue("@SiteRefrence", oclsEstimationEntity.Site_Refrence);
cmd.Parameters.AddWithValue("@Action", Mode.ToString());
lock (Globale.conn)
{
var connectionString = Globale.GetConnectionString();
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
result = cmd.ExecuteNonQuery() > 0;
}
}
result = true;
}
}
catch (Exception exception)
{
var st = new StackTrace(exception, true);
// Get the top stack frame
var frame = st.GetFrame(0);
// Get the line number from the stack frame
var line = frame.GetFileLineNumber();
ErrorLog("c:/inetpub/wwwroot/BC_EEA1/error/error.txt", "EstDAL "+ System.Reflection.MethodBase.GetCurrentMethod().Name, exception.Message, line, Globale.GetConnectionString(), oclsEstimationEntity.EstCode.ToString());
}
}
finally
{
if (cmd != null)
{
cmd = null;
}
Globale.CloseConnection();
}
解决方案
推荐阅读
- android - 重用布局和片段
- django - 在 Elasticsearch DSL DRF 上搜索嵌套字段
- go - Kubernetes 中的 NSQ 集群
- javascript - 如何为箭头函数内的逻辑正确创建单元测试
- python - 撤消python中的标记化
- java - 类型“JavaCompile”属性“options.compilerArgumentProviders.apt$0.name”缺少输入或输出注释。升级到 Gradle 7 后出错
- css - 如何仅使用 CSS 更改特定 SVG 路径的颜色?
- amazon-redshift - 从 parquet 文件将具有默认值的数据加载到 Redshift
- elasticsearch - Elasticsearch Painless 获取基于 Doc 值的动态参数
- javascript - WebStorm 的流行插件