SqlDataReader¸¦ »ç¿ëÇßÀ» ¶§¿¡´Â
¸í½ÃÀûÀ¸·Î
dr.Close() ó·³ Close() ¸Þ¼µå¸¦ È£ÃâÇØÁÖ´Â°É ±ÇÀåÇÕ´Ï´Ù.
¹°·Ð, .NET Framework¿¡¼´Â
ÀÚµ¿À¸·Î 󸮸¦ ÇØÁÖ±ä ÇÕ´Ï´Ù...
ÇϳªÀÇ ÆäÀÌÁö¿¡¼
SqlDataReader·Î ¹Þ¾Æ¼ ó¸®ÇÒ ¶§¿¡´Â
using() {} ±¸¹®°ú
Close() ±¸¹® »ç¿ëÇÏ´Â°Ô µ¿ÀÏÇÕ´Ï´Ù.
SqlDataReader°¡ ³»ºÎÀûÀ¸·Î IDisposable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ¿© ¸¸µé¾îÁ®¼
using ±¸¹®À¸·Î Dispose ½Ãų ¼ö ÀÖ½À´Ï´Ù.
´Ù¸¸,
°èÃþÀ» ³Ñ¾î°¡´Â ¹æ½ÄÀ¸·Î ÄÚµùÇÒ °æ¿ì¿¡´Â
Áï, SqlDataReader °³Ã¼·Î ¹ÝȯÇÏ´Â ¸Þ¼µå¸¦ ¸¸µé°í
À̸¦ ´Ù¸¥ Ŭ·¡½º ¶Ç´Â ´Ù¸¥ °èÃþ¿¡¼ »ç¿ëÇÒ °æ¿ì¿¡´Â
¾Æ·¡ ÄÚµå Á¦ÀÏ ÇÏ´Ü¿¡¼ CommandBehavior.CloseConnection ¿°ÅÇüÀ» Ãß°¡ÇØ ÁÖ¸é ÁÁ½À´Ï´Ù.
±×·¯¸é, µ¥ÀÌÅ͸®´õ°¡ ´ÝÈú ¶§ Ä¿³Ø¼Ç °³Ã¼µµ ÀÚµ¿À¸·Î ´Ý¾ÆÁÖ´Â È¿°ú°¡ ÀÖ½À´Ï´Ù.
public SqlDataReader GetMemos()
{
SqlConnection objCon = new SqlConnection();
// Web.config ÆÄÀÏÀÇ Ä¿³Ø¼Ç ½ºÆ®¸µ °ª Àоî¿À±â
objCon.ConnectionString =
ConfigurationManager.ConnectionStrings[
"DevADONETConnectionString"].ConnectionString;
objCon.Open();
SqlCommand objCmd = new SqlCommand();
objCmd.Connection = objCon;
objCmd.CommandText = "ListMemo";
objCmd.CommandType = CommandType.StoredProcedure;
// µ¥ÀÌÅ͸®´õ°ªÀ» ¹ÝȯÇÏ°í Ä¿³Ø¼Ç Á¾·á
return objCmd.ExecuteReader(CommandBehavior.CloseConnection);
}
À§ ÄÚµå¿Í °°ÀÌ ¸Þ¼µå¿¡¼ SqlDataReader·Î ¹ÝȯÇÏ´Â ¸Þ¼µå¿¡¼´Â
Read()¸¦ È£ÃâÇÏÁö ¾ÊÁö¸¸,
À̸¦ »ç¿ëÇÏ´Â Áï, È£ÃâÇÏ´Â Ãø¿¡¼´Â Read()·Î ¹Ýº¹Çϸé¼
»ç¿ëµÉ °ÍÀÔ´Ï´Ù.
Âü°í·Î,
Á¦ °æÇè¿¡¼´Â
ÃÖ±Ù 3~4³â ³»¿¡ °ÀÇ°¡ ¾Æ´Ñ ÀϹÝÀûÀÎ °³¹ßÇÒ ¶§¿¡´Â
SqlDataReader¸¦ »ç¿ëÇÏ¿© whilte (dr.Read() ) {} ½ÄÀÇ
Äڵ带 »ç¿ëÇÏÁö ¾ÊÀº µí ÇÕ´Ï´Ù.
Á¦ ÃÖ±Ù °ÀÇ ¿©±â Àú±â¸¦ »ìÆ캸½Ã¸é ¾Æ½Ã°ÚÁö¸¸,
µ¥ÀÌÅͺ£À̽º 󸮴Â
¸ðµÎ Dappper .NET µîÀ» »ç¿ëÇÏ¿© DataSetÀ̳ª SqlDataReader°¡ ¾Æ´Ñ
List ÇüÅ·Π¹Þ¾Æ¼
»ç¿ëÇÏ°í ÀÖ½À´Ï´Ù.
ÀÌ ºÎºÐÀº Âü°íÇϽñ⠹ٶø´Ï´Ù.
±èÁø¸¸ ´ÔÀÌ ¾²½Å ¿ø¹® ±ÛÀÔ´Ï´Ù.
¾È³çÇϼ¼¿ä °»ç´Ô
SqlDataReade¸¦ ÀÌ¿ëÇؼ »ó¼¼ÆäÀÌÁö¸¦ ¸¸µé¶§ °ü·Ã Áú¹®ÀÔ´Ï´Ù.
public SqlDataReader SelectReplyByNum(int num)
{
SqlConnection objCon = new SqlConnection(_ConnectionString);
objCon.Open();
SqlCommand objCmd = new SqlCommand("ViewReply", objCon);
objCmd.CommandType = CommandType.StoredProcedure;
objCmd.Parameters.AddWithValue("@Num", num);
SqlDataReader objDr = objCmd.ExecuteReader();
return objDr; // Close() ->using () { }»ç¿ëÇؼ Close() ó¸® ÇÊ¿ä
}
-----------------------------------------------------------------------
Áú¹®Àº¿ä
1. À§¿¡´Â ½ÇÀç·Î using±¸¹®À» »ç¿ëÇؼ Ŭ·Î¡ÇÏÁö ¾Ê°í //Àο뿡¼¸¸ Ŭ·Î¡ó¸®°¡ ÇÊ¿äÇÏ´Ù°í ¸»¾¸Çϼ̽À´Ï´Ù.
±×·±µ¥ Ŭ·Î¡ 󸮸¦ ¾Æ·¡¿Í °°ÀÌ
Using(SqlDataReader objDr = objCmd.ExecuteReader())
{
return objDr;
}
·Î ¾Ë°í Àִµ¥¿ä....
À§Ã³·³ Ŭ·Î¡ 󸮸¦ ¾ÈÇصµ ¶È °°Àº ÀǹÌÀÎÁö¸¦ ¾Ë°í ½Í½À´Ï´Ù.
2¹ø° Áú¹®Àº SqlDataReder¸¦ »ç¿ëÇÒ¶§
SqlDataReader objDr = objCmd.ExecuteReader();
While(objDr.Read( ))
{
lblName.Text = objDr["Name"].ToString();
lblEmail.Test = objDr["Email"].ToString()
}
ÀÌ·¸°Ô Read ¸Þ¼µå¸¦ ÀÌ¿ëÇؼ ¹Ýº¹ÀûÀ¸·Î ¹ÙÀεùÀ» ÇÏ´Â °ÍÀ¸·Î ¾Ë°í Àִµ¥¿ä
¸Ç À§ÀÇ ¿¹Á¦´Â While°ú Read¸Þ¼µå¸¦ »ç¿ëÇÏÁö ¾Ê¾Ò´Âµ¥ ±×Â÷À̸¦ ¾Ë°í½Í½À´Ï´Ù.
Áñ°Å¿î ÁÖ¸» µÇ½Ê½Ã¿À
|