[Áöµð³ÝÄÚ¸®¾Æ]DataReader Ŭ·¡½º´Â °£·«ÇÏ°Ô ¸»ÇÏ¸é µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áµÈ »óÅ¿¡¼ Àбâ Àü¿ë(read-only), ÀüÁø Àü¿ë(forward-only)ÀÇ ·¹ÄÚµå ¼ÂÀ¸·Î ºÒ·¯¿À´Â Ŭ·¡½ºÀÌ´Ù. ±×·¸±â ¶§¹®¿¡ µ¥ÀÌÅ͸¦ ºÒ·¯¿À´Â ±â´ÉÀ» Çϴ Ŭ·¡½º Áß¿¡ °¡Àå ¼º´ÉÀÌ ÁÁÀº °ÍÀÌ´Ù. ´ÙÀ½Àº DataReaderÀÇ Æ¯Â¡ÀÌ´Ù.
| DataReader °´Ã¼ÀÇ ·¹ÄÚµå¼ÂÀº Àбâ Àü¿ëÀÌ´Ù. DataReader °´Ã¼ÀÇ ·¹ÄÚµå¼ÂÀº ÀüÁø Àü¿ëÀÌ´Ù. µû¶ó¼ ÆäÀÌ¡À» »ç¿ëÇϰųª óÀ½ÀÇ ·¹ÄÚµå·Î °¡´Â µîÀÇ ´Ù¾çÇÑ ±â´ÉÀº °¡Áö°í ÀÖÁö ¾Ê´Ù. DataReader°¡ ¿·ÁÀÖ´Â µ¿¾ÈÀº Connection °´Ã¼¸¦ ÀÌ¿ëÇØ¼ ´Ù¸¥ ÀÏÀ» ÇÒ ¼ö ¾ø´Ù. ÀÌ´Â DataReader°¡ ¿¬°á ÁöÇâÀûÀÎ ·¹ÄÚµå¼ÂÀ̱⠶§¹®ÀÌ´Ù. |
DataReader¸¦ ÀÌ¿ëÇØ¼ ´Ü¼øÇÏ°Ô ·¹ÄÚµå¼ÂÀ» °¡Á®¿Ã ¼ö ÀÖÀ» »Ó ¾Æ´Ï¶ó, ¿©·¯ °³ÀÇ ·¹ÄÚµå¼ÂÀ» °¡Á®¿Ã ¼öµµ ÀÖ´Ù. ¶ÇÇÑ ÀúÀå ÇÁ·Î½ÃÀú¸¦ »ç¿ëÇØ¼ ·¹ÄÚµå¼ÂÀ» °¡Á®¿Ã ¼öµµ ÀÖ´Ù. À̹ø °Á¿¡¼´Â °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â Command °´Ã¼ÀÇ ExecuteReader()¸¦ ÀÌ¿ëÇÑ ¿¹Á¦¸¦ ´Ù·çµµ·Ï ÇϰڴÙ.
´ÙÀ½Àº DataReader¸¦ ÀÌ¿ëÇØ¼ ·¹ÄÚµå¼ÂÀ» °¡Á®¿À´Â ¼ø¼ÀÌ´Ù.
| ¨Í Connection °´Ã¼¸¦ »ý¼ºÇÑ´Ù. ¨Î Command °´Ã¼¸¦ »ý¼ºÇÑ´Ù. ¨Ï Command °´Ã¼ÀÇ CommandText ÇÁ·ÎÆÛƼ¿¡ Äõ¸®¹®À̳ª ÀúÀå ÇÁ·Î½ÃÀú¸¦ ¼³Á¤ÇÑ´Ù. ¨Ð Command °´Ã¼ÀÇ CommandType ÇÁ·ÎÆÛƼ¿¡ ½ÇÇàµÉ Äõ¸®¹®ÀÇ Á¾·ù¸¦ ¼³Á¤ÇÑ´Ù. ¨Ñ Command °´Ã¼ÀÇ Connection ÇÁ·ÎÆÛƼ¿¡ Connection °´Ã¼¸¦ ¼³Á¤ÇØÁØ´Ù. ¨Ò Connection °´Ã¼ÀÇ Open() ¸Þ¼µå¸¦ È£ÃâÇÏ¿© µ¥ÀÌÅͺ£À̽º¸¦ ¿¾îÁØ´Ù. ¨Ó Command °´Ã¼ÀÇ ExecuteReader() ¸Þ¼µå¸¦ È£ÃâÇÏ¿© ÇØ´ç Äõ¸®¹®À̳ª ÀúÀå ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇØ¼ DataReader °´Ã¼¿¡ ·¹ÄÚµå¼ÂÀ» ³Ö´Â´Ù. ¨Ô DataReaderÀÇ Read() ¸Þ¼µå¸¦ È£ÃâÇØ¼ °¢°¢ÀÇ ·¹Äڵ忡 ´ëÇÑ Ã³¸®¸¦ ÇÑ´Ù. ¨Õ ÇØ´ç 󸮰¡ ³¡³µÀ¸¸é DataReaderÀÇ Close() ¸Þ¼µå¸¦ È£ÃâÇÏ¿© DataReader °´Ã¼¸¦ ´Ý¾ÆÁØ´Ù. ¨Ö Connection °´Ã¼ÀÇ Close() ¸Þ¼µå¸¦ È£ÃâÇÏ¿© µ¥ÀÌÅͺ£À̽º¸¦ ´Ý¾ÆÁØ´Ù. |
À̹ø¿¡µµ ¿ª½Ã Äõ¸®¹®À» Á÷Á¢ ÀÔ·ÂÇØ¼ µ¥ÀÌÅ͸¦ ºÒ·¯¿À´Â ¹æ¹ý°ú sp¸¦ ÀÌ¿ëÇØ¼ µ¥ÀÌÅ͸¦ ºÒ·¯¿À´Â ¹æ¹ýÀ» ¸ðµÎ ÀÌ¿ëÇØ º¸µµ·Ï ÇϰڴÙ.
´ÙÀ½Àº µ¥ÀÌÅ͸¦ ºÒ·¯¿À´Â spÀÌ´Ù.
| Create Proc up_SelectAllAddress As Begin Select * From Address End |
¹°·Ð ´õ º¹ÀâÇÑ sp¸¦ »ç¿ëÇÒ ¼öµµ ÀÖÁö¸¸ °£´ÜÇÏ°Ô »ç¿ëÇϱâ À§Çؼ À§¿Í °°Àº sp¸¦ ÀÛ¼ºÇß´Ù.
À§ÀÇ sp´Â Àá½Ã ÈÄ¿¡ ´Ù·çµµ·Ï ÇÏ°í ¸ÕÀú Á÷Á¢ Äõ¸®¹®À» ÀÔ·ÂÇØ¼ ¸¸µé¾îº¸µµ·Ï ÇϰڴÙ. »õ·Î¿î ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé°í ÇÁ·ÎÁ§Æ®ÀÇ À̸§À» DataReaderEx·Î ÇÑ´Ù. »õ ÇÁ·ÎÁ§Æ® ´ëÈ»óÀÚ´Â ¾ÕÀÇ °Á¿¡¼ ¸î ¹ø º¸¿©µå·ÈÀ¸´Ï±î ÀÌÁ¦ºÎÅÍ´Â ±×¸²À¸·Î º¸¿©µå¸®Áö´Â ¾Ê°Ú´Ù.
»õ ÇÁ·ÎÁ§Æ®°¡ »ý¼ºÀÌ µÇ¸é ÄÚµå ÆíÁý±â¿¡ ´ÙÀ½ÀÇ Äڵ带 ÀÔ·ÂÇÑ´Ù.
| using System; using System; using System.Data; using System.Data.SqlClient; namespace DataReaderEx { public class Class1 { [STAThread] static void Main(string[] args) { // Connection °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù. SqlConnection connection = new SqlConnection( "server=localhost;" + "database=Study;uid=sa;pwd=tndls" ); GetRecordByTSql( connection ); }// Main ¸Þ¼µå ³¡ static void GetRecordByTSql( SqlConnection connection ) { // Command °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù. SqlCommand command = new SqlCommand( "Select * From Address", connection ); // Command °´Ã¼ÀÇ CommandType ÇÁ·ÎÆÛƼ¿¡ ½ÇÇàµÉ Äõ¸®¹®ÀÇ Á¾·ù¸¦ ¼³Á¤ÇÕ´Ï´Ù. command.CommandType = CommandType.Text; // Connection °´Ã¼ÀÇ Open() ¸Þ¼µå¸¦ È£ÃâÇÏ¿© µ¥ÀÌÅͺ£À̽º¸¦ ¿¾îÁÝ´Ï´Ù. connection.Open(); // Command °´Ã¼ÀÇ ExecuteReader() ¸Þ¼µå¸¦ È£ÃâÇÏ¿© ÇØ´ç Äõ¸®¹®À̳ª // ÀúÀå ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇØ¼ DataReader °´Ã¼¿¡ ·¹ÄÚµå¼ÂÀ» ³Ö½À´Ï´Ù. SqlDataReader reader = command.ExecuteReader(); // DataReaderÀÇ Read() ¸Þ¼µå¸¦ È£ÃâÇØ¼ °¢°¢ÀÇ ·¹Äڵ忡 ´ëÇÑ Ã³¸®¸¦ ÇÕ´Ï´Ù. while ( reader.Read() ) { Console.WriteLine( "{0}\t{1}\t{2}", reader["ID"], reader["Name"] , reader["Email"] ); } // ÇØ´ç 󸮰¡ ³¡³µÀ¸¸é DataReaderÀÇ Close() ¸Þ¼µå¸¦ È£ÃâÇÏ¿© // DataReader °´Ã¼¸¦ ´Ý¾ÆÁÝ´Ï´Ù. reader.Close(); // Connection °´Ã¼ÀÇ Close() ¸Þ¼µå¸¦ È£ÃâÇÏ¿© µ¥ÀÌÅͺ£À̽º¸¦ ´Ý¾ÆÁÝ´Ï´Ù. connection.Close(); } // GetRecordByTSql ¸Þ¼µå ³¡ } // Ŭ·¡½º ³¡ } |
¾î¶²°¡? ±âÁ¸ÀÇ RecordSet°ú´Â ´Ù¼Ò Â÷À̰¡ Á¶±Ý ÀÖÀ» °ÍÀÌ´Ù.
±×·¡µµ °ÆÁ¤ÇÒ ÇÊ¿ä ¾ø´Ù. µÑÀº ¶È°°´Ù.
ÀÏ´Ü ÁÖÀÇ ±í°Ô º¼ ºÎºÐÀº ´ÙÀ½ÀÇ µÎ °¡Áö Á¤µµ ¹Û¿¡ ¾øÀ» °ÍÀÌ´Ù.