반응형

Database라고 하면 많은 종류가 있겠지만,,

 

파일 DB중에 하나인 MS Access 파일인 mdb 파일을 WPF내에서 사용하는 클래스를 보도록 하자.

 

 

/// <summary> Database 관련 클래스 </summary>

    /// <author> Kim Se Hoon </author>

    class InsomniaDAO

    {

 

        #region members

 

        /// <summary> 단일 객체 생성 </summary>

        private static InsomniaDAO db = new InsomniaDAO();

 

        /// <summary> 공급자 명 </summary>

        private string provider = "Provider = Microsoft.JET.OLEDB.4.0;Data Source =";

 

        /// <summary> DB 연결 객체</summary>

        private OleDbConnection DAO_Con;

 

        /// <summary> Result를 얻어올 객체 </summary>

        private OleDbDataReader DAO_Result;

 

        /// <summary> DB 접속 여부 </summary>

        bool is_connection = false;

 

        #endregion

 

        /// <summary>

        /// 생성자

        /// </summary>

        public InsomniaDAO()

        {

 

        }

 

        #region DB Method

 

        /// <summary>

        /// 객체의 인스턴스를 가져옵니다.

        /// </summary>

        /// <returns></returns>

        public static InsomniaDAO GetInstance() { return db; }

 

        /// <summary>

        /// DB Open 여부를 return

        /// </summary>

        public bool Is_Open()

        {

            return is_connection;

        }

 

        /// <summary>

        /// DB Open

        /// </summary>

        /// <param name="File_address">dbm 파일 주소</param>

        /// <returns>Oepn 여부</returns>

        public bool DB_Open(string File_address)

        {

            /// OLEDB 클래스 선언

            DAO_Con = new OleDbConnection();

 

            /// Connecting 할 공급자와 파일경로를 선택한다.

            DAO_Con.ConnectionString = provider + File_address;

 

            try

            {

                /// OLEDB 연결을 시작한다

                DAO_Con.Open();

 

                is_connection = true;

 

                Console.WriteLine("DB Open()");

 

                return true;

            }

            catch

            {

                /// 중간에 실패시 다시 닫아준다.

                DAO_Con.Close();

 

                is_connection = false;

 

                return false;

            }

        }

 

        /// <summary>

        /// DB 닫기

        /// </summary>

        /// <returns>Close 여부</returns>

        public bool DB_Close()

        {

            if (Is_Open())

            {

                Console.WriteLine("DB_Close()");

 

                DAO_Con.Close();

 

                is_connection = false;

 

                return true;

            }

            else

            {

                return false;

            }

        }

 

        /// <summary>

        /// 쿼리 실행 update,insert,delete query 위주로 사용 내부적으로 호출예정

        /// </summary>

        /// <param name="query">실행할 쿼리</param>

        /// <returns>쿼리 실행 여부</returns>

        public bool ExcuteQuery(string query)

        {

            try

            {

                if (Is_Open())

                {

                    /// 쿼리를 실행 시키기 위한 명령 클래스

                    OleDbCommand db = new OleDbCommand(query, DAO_Con);

 

                    DAO_Result = null;

 

                    /// 실행 시킨 결과를 DAO_Result에 담는다.

                    DAO_Result = db.ExecuteReader();

 

                    return true;

                }

                else

                {

                    return false;

                }

            }

            catch

            {

                return false;

            }

        }

 

        /// <summary>

        /// 쿼리 실행후의 Record가 존재하는지 여부

        /// </summary>

        /// <returns>Result Record의 존재 여부</returns>

        public bool IsResultRecord()

        {

            try

            {

                if (Is_Open())

                {

                    return DAO_Result.HasRows;

                }

                return false;

            }

            catch

            {

                return false;

            }

        }

 

        /// <summary>

        /// 다음 레코드로 넘어감

        /// </summary>

        /// <returns> 레코드가 있는지 여부</returns>

        public bool Next()

        {

            try

            {

                if (Is_Open() && IsResultRecord())

                {

                    return DAO_Result.Read();

                }

                return false;

            }

            catch

            {

                return false;

            }

        }

 

        /// <summary>

        /// 해당필드의 레코드값을 가져옴

        /// </summary>

        /// <param name="Field_Name">필드 이름</param>

        /// <returns>필드 값 String</returns>

        public string Get_Result(string Field_Name)

        {

            try

            {

                if (Is_Open())

                {

                    return DAO_Result[Field_Name].ToString();

                }

                return null;

            }

            catch

            {

                return null;

            }

        }

 

        /// <summary>

        /// 해당필드번호의 레코드값을 가져옴

        /// </summary>

        /// <param name="Field_Order">필드 번호</param>

        /// <returns>필드 값 String</returns>

        public string Get_Result(int Field_Order)

        {

            try

            {

                if (Is_Open())

                {

                    return DAO_Result[Field_Order].ToString();

                }

                return null;

            }

            catch

            {

                return null;

            }

        }

 

 

MS Access 구성되어진 데이터베이스 파일인 mdb 파일을 Open하고, 쿼리를 실행시키고, 그에 대한 결과값을 받아오는 클래스이다.

 

아래의 코드는 위의 클래스를 사용하는 예이다.

 

///<summery> DB를 또 한번 Accesss하기 위한 클래스 </summery>

            InsomniaDAO item_DB = new InsomniaDAO();

 

            /// Current Directory Setting

            //string file_add = Directory.GetCurrentDirectory();

            string file_add = AppDomain.CurrentDomain.BaseDirectory + "Resources/Insomnia.mdb";

 

            /// DB_Open

            item_DB.DB_Open(file_add);

 

 

            /// Item을 검색하기 위한 쿼리

            string Query = "select * from ItOwner where stId = " + stNum.ToString();

 

            /// 쿼리 실행

            item_DB.ExcuteQuery(Query);

 

            while (item_DB.Next())

            {

                /// std라는 학생클래스에 현재 아이템 등록

                std.AddItem(Int32.Parse(item_DB.Get_Result("itId")), Boolean.Parse(item_DB.Get_Result("IsVisible")));

            }

 

            item_DB.DB_Close();

 

 

위의 예제 코드를 보면 어떻게 사용하는지 대충 감이  거라고 생각한다….^^;;;


http://blog.naver.com/ssm_sebiya?Redirect=Log&logNo=140093716253

반응형

'Program > WPF' 카테고리의 다른 글

자동으로 알파벳 순서 나타내기  (0) 2009.10.31
WPF 동영상  (0) 2009.09.16
DependencyProperty 클래스  (0) 2009.08.28
GridSplitter 로 열 크기 조정  (0) 2009.08.21
GridSplitter 로 행 크기 조정  (0) 2009.08.21

+ Recent posts