나는이 기능을 가지고 :내 열린 DataReader는 어디에 있습니까?
public void Change_Reservation(string pDataAreaId, string pSalesId, string pCustNum, string pNom, SqlConnection Conn)
{
try
{
ADV_CdeRAVCollection myColl = new ADV_CdeRAVCollection();
using (SqlCommand Com = Conn.CreateCommand())
{
Com.CommandText = ADV_CdeRAV._SQL_Select_If_Reserve;
Com.Parameters.AddWithValue("@DataAreaId", pDataAreaId);
using (SqlDataReader rs = Com.ExecuteReader())
{
while (rs.Read())
{
ADV_CdeRAV myObj = new ADV_CdeRAV();
myObj.AddFromRecordSet_SelectRAV(rs);
if (myObj.Nom == null)
{
res = "null to nom";
}
else if (myObj.Nom.Trim() == pNom)
{
res = "nom to null";
}
myColl.Add(myObj);
}
Com.Dispose();
rs.Close();
rs.Dispose();
}
}
if (res == "nom to null")
{
//UPDATE NOM TO NULL
using (SqlCommand Com2 = Conn.CreateCommand())
{
Com2.CommandText = ADV_CdeRAV._SQL_Update_Nom_To_Null;
Com2.Parameters.AddWithValue("@DataAreaId", pDataAreaId);
Com2.ExecuteReader();
Com2.Dispose();
}
}
else if (res == "null to nom")
{
//UPDATE NULL TO NOM
using (SqlCommand Com3 = Conn.CreateCommand())
{
Com3.CommandText = ADV_CdeRAV._SQL_Update_Null_To_Nom;
Com3.Parameters.AddWithValue("@DataAreaId", pDataAreaId);
Com3.ExecuteReader();
Com3.Dispose();
}
}
if (myColl.Count == 0)
{
//INSERT
using (SqlCommand Com4 = Conn.CreateCommand())
{
Com4.CommandText = ADV_CdeRAV._SQL_Insert_Reservation;
Com4.Parameters.AddWithValue("@DataAreaId", pDataAreaId);
Com4.ExecuteReader();
Com4.Dispose();
}
}
}
catch (System.Exception)
{
throw;
}
}
을하지만 너무이 오류가 발생했습니다 :
는 "이미이 명령과 관련된 열린 DataReader가 있습니다."
그러나 내 코드 (rs)의 DataReader는 "사용 중"블록에서 사용되므로 열어 둘 수 없습니다. "using"블록을 사용하고 MARS를 true로 설정합니다. 그러나이 문제를 해결할 수 없으며 C#/ASP.NET을 처음 사용합니다.
'using' 블록 안에'rs'를 사용하십시오. –
정확히 어떤 줄에? _using 문을 사용할 때'.Dispose()'메소드를 사용할 필요가 없습니다. 문을 사용하여 이것을 처리합니다. –