2012년 5월 1일 화요일

516) ADO 닷넷 강좌 펌11


깜찍아, ADO.NET??? ADO.NET!!!

Written By 깜찍이
HomePage : http://www.cuteguy.pe.kr



안녕하세요?
제 강좌를 기다리셨나요? 아니라구요??? ㅡ.ㅡ
새해 福은 많이 받으셨구요???
여러분 모두 복 많이 받으시고 부~~~자 되시길 바래요~~~ ^^;;
오늘 다룰 내용은 데이터베이스에 연결하는 것부터 알아보려고 합니다. 어떤 분야이던지 기본이 중요한 것 아니겠어요? 아무리 좋은 프로그램을 만들었다고 하더라도 데이터베이스에 연결을 하지 못한다고 한다면 그건 프로그램이 아니고 단지 소스 코드에 불과하다는 것.... 전 초보시절에 처음 받아본 공개 소스에서 뼈저리게 느꼈답니다. ㅡ.ㅡ ( 벌써 몇 년전인지도 모르겠네요.. ^^ )
본론으로 들어가도록 하겠습니다.
ADO.NET에서는 데이터베이스에 연결을 할 때에는 기존의 ADO 와 그리 다른 점이 없습니다. 데이터베이스와의 연결을 담당하는 클래스도 ADO와 비슷하게 Connection 클래스가 담당하고 있답니다. 다만 데이터베이스의 종류에 따라서 클래스가 바뀐다는 점이 ADO와 다른 점이죠. 참고로 강좌에서 사용되는 예제에서는 SQL Server 2000을 기준으로 설명하도록 하겠습니다.
Connection 클래스의 종류에는 SQL 서버 7.0과 그 이상의 버전을 지원하는 SqlConnection과 OLE DB 데이터베이스를 지원하는 OleDbConnection, ODBC를 지원하는 OdbcConnection 이 있습니다. ( 아마도 제 생각으로는 ODBC를 사용하는 일은 거의 없을 것 같네요. ) 각각의 클래스는 거의 유사한 기능을 제공하고 있으므로 여러분이 사용하시고자 하는 종류에 따라서 클래스를 선택하시면 됩니다.
Connection 클래스로 데이터베이스와 연결을 하고 나면 데이터베이스에서 레코드를 가져오거나 데이터베이스의 레코드를 변경하는 등의 작업을 할 수 있습니다. 주의하실 점은 모든 작업이 종료가 되면 명시적으로 연결을 닫아주어야 합니다. 만일 닫지 않는다면 메모리상에 데이터베이스와의 연결을 하고 있으므로 자원의 낭비가 일어날 수 있습니다. 이런 사소한 자원의 낭비가 여러분의 웹서버를 위협할 수도 있다는 것은 여러 곳에서 강조한 내용이므로 잘 알고 계시겠죠?
Connection 클래스의 라이프 사이클( Life Cycle )은 대략 다음과 같습니다.
ⓐ Connection 객체를 선언합니다.
ⓑ Connection 객체를 생성합니다.
ⓒ 데이터베이스에 연결하기 위한 연결 문자열을 지정해줍니다.
ⓓ Connection 객체의 Open 메서드를 사용해서 데이터베이스와의 연결을 열어줍니다.
ⓔ 해당 작업이 종료되었으면 Connection 객체의 Close 메서드를 사용해서 데이터베이스와의 연결을 닫아줍니다.
어떤가요? ADO에서 사용하던 Connection 클래스와 거의 유사하지 않나요?
이번에는 실제 소스를 보면서 알아보도록 하겠습니다. 드디어 비주얼 스튜디오 .NET( 이하 VS .NET )을 사용하게 되는군요. 참고로 저는 모든 프로그램을 VS .NET을 사용해서 만들었습니다. 그 이외의 질문은 사양합니다. ( 제가 잘 모르걸랑요.. ^^ ) 먼저 VS .NET 을 띄워서 새로운 프로젝트를 실행합니다.

이렇게 새 프로젝트를 생성하고 나면 다음과 같은 화면이 생기죠?

좌측의 코드 윈도우에 다음의 소스코드를 작성합니다. 소스가 너무 길다구요? 이 소스가 길다고 하시면 나중에 나오는 프로그램은 어떻게 작성하시려구... ㅡ.ㅡ
using System;
using System.Data.SqlClient;

namespace ConnectionEx
{
    ///

    /// 데이터베이스에 연결하는 간단한 예제
    ///


    class Class1
    {
        ///

        /// 데이터베이스에 연결후에 연결되었으면 데이터베이스의 연결상태를 보여주고
        /// 연결을 닫아준다. 만일 연결이 되지 않았을 경우는 에러메시지를 출력한다.
        ///

        [STAThread]
        static void Main(string[] args)
        {
            // ⓐ Connection 객체를 선언합니다.
            SqlConnection objConn;

            // ⓑ Connection 객체를 생성합니다.
            objConn = new SqlConnection();

            // ⓒ 데이터베이스에 연결하기 위한 연결 문자열을 지정해줍니다.각자 서버의 환경에 맞게 바꿔주세요.
            string connectionString = "server=localhost;"
                    + "database=Pubs;uid=sa;pwd=0000";

            objConn.ConnectionString = connectionString;

            // ⓓ Connection 객체의 Open 메서드를 사용해서 데이터베이스와의 연결을 열어줍니다.
            try
            {
                Console.WriteLine( "데이터베이스에 연결중..." );

                objConn.Open();

                Console.WriteLine("데이터베이스에 연결 성공" );

                // 데이터베이스와 연결되었으면 데이터베이스의 정보를 가져옵니다.
                Console.WriteLine( "□□□□□□□□□□□□□□□□□□□" );
                Console.WriteLine( "현재 데이터베이스 : " + objConn.Database );
                Console.WriteLine( "현재 연결 상태 : " + objConn.State );
                Console.WriteLine( "데이터베이스 버전 : " + objConn.ServerVersion );
                Console.WriteLine( "□□□□□□□□□□□□□□□□□□□" );
            }
            catch( Exception e )
            {
                // 에러가 발생한 경우는 에러메시지를 뿌려줍니다.
                Console.WriteLine( "데이터베이스에 연결 실패" );
                Console.WriteLine( e.Message );
                Console.WriteLine( e.StackTrace );
            }
            finally
            {
                // 모든 작업이 종료되면 데이터베이스를 닫아줍니다.
                Console.WriteLine( "데이터베이스 연결 종료중" );
                objConn.Close();
                Console.WriteLine( "데이터베이스 연결 종료" );
            }
        }
    }
}
소스를 모두 작성했으면 컴파일을 합니다. 단축키는 ( Ctrl + Shift + B )입니다. 사실 컴파일보다는 빌드가 맞는 말이지요.
에러가 발생하나요? 에러가 발생한 경우는 위의 소스를 다시 잘 살펴보시고 소스를 수정하세요.
에러를 모두 수정한 후에는 Ctrl + F5를 눌러서 프로그램을 실행합니다. 어떤가요? 다음과 같은 결과화면이 나오나요?

만일 에러가 발생할 경우는 다음과 같은 화면이 나타날 것입니다.

만일 OLE DB를 사용하시고자 하는 분은 위의 소스 코드에서 using System.Data.SqlClient; 이 부분을 using System.Data.OleDb; 로 변경하시고 연결 문자열을 변경해주시면 됩니다. OLE DB 를 사용할 경우에는 연결 문자열이 약간 다른데 Provider를 명시해 주어야 합니다. 왜냐하면 SQL Server의 경우는 직접 SQL Server를 연결하므로 공급자를 명시할 필요가 없지만 OLE DB를 사용하는 경우는 다른 여러 데이터베이스 서버 중에서 선택을 해야 하기 때문에 각각에 맞는 데이터베이스 서버의 공급자를 명시하는 것입니다. 다음은 SQL Server OLE DB에 연결하는 연결 문자열의 예입니다.

string connectionString = "Provider=SQLOLEDB;server=localhost;"
        + "database=Pubs;uid=sa;pwd=0000";


이상으로 간단하게나마 데이터베이스에 연결해 보는 것을 마치겠습니다. 다음번에는 연결된 데이터베이스에서 여러가지 작업을 할 수 있는 기본을 더 알아본 후에 예제를 다루도록 햐겠습니다. 여러분 모두 즐거운 하루 되세요.

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...