'Mysql Dao'에 해당되는 글 4건

  1. 2009.11.18 예제3 : 데이터의 조회
  2. 2009.11.18 예제2 : 테이블 생성 및 조회
  3. 2009.11.16 예제1 : Database Connection
  4. 2009.11.14 Spac Dao for Mysql Ver 9.0629
Spac 매뉴얼/MySQL Dao2009. 11. 18. 22:35
먼저 데이터 조회 예제를 수행하기 위해 기본 데이터를 넣어 놓겠습니다.

Insert Into member ( user_id, user_name, reg_date) values ( 'dukman', '덕만', now() );
Insert Into member ( user_id, user_name, reg_date) values ( 'misil', '미실', now() );
Insert Into member ( user_id, user_name, reg_date) values ( 'bidam', '비담', now() );

위의 쿼리문을 실행하여 데이터를 3건 등록한 후 예제2의 회원수구하는 클래스인 "Member" 를 바로 호출해 보도록 하겠습니다.


브라우저에서 결과를 확인 합니다.

결과는 "회원수는 3 명 입니다." 라고 메세지가 출력될 것입니다.


그럼 이제 실제 3명의 상세 데이터값을 가져와 봅니다.
Member 클래스를 좀 더 보완하겠습니다.

* Spac/model/Member.Class.php
<?php
class Member extends Controller {

    var $data_list;
    
    function Member() { }

    function initMember() {               //맴버클래스 초기화메소드를 만들고 여기서 DB 연결을 합니다.
        $this->getControllerInstance("Dao");        // Dao 클래스를 로드합니다.
        $this->Dao->transaction = true;                    // 트랜젝션을 Start 합니다.
        $this->Dao->Connect();                            // DB를 연결합니다.
    }

    function getCount() {
        $query = " Select count(*) From member ";
        $this->Dao->
executeQuery($query);
        echo "<p>회원수는 " . $this->Dao->getResult() ." 명 입니다.</p>";
    }

    function getList() {
   
        $this->data_list = array();                         //결과를 담을 변수를 초기화 합니다.

        $query = " Select * From member ";          //전체 데이터 검색 쿼리문 작성
        $this->Dao->
executeQuery($query);                //쿼리문 실행

      $Result = $this->Dao->result;
        while( $Rows = $this->Dao->getFetchArray() ) { //결과값을 행을 돌며
             $this->data_list[] = $Rows;               //결과 변수에 배열로 담습니다.
        }

        echo "<pre>";                                      //배열로 담긴 결과값을 보기 쉽도록 출력합니다.
        print_r($this->data_list);
        echo "</pre>";

    }



    function execute() {                                     //Spac의 기본 액션메소드를 정의합니다.
        $this->initMember();                               
//기본메소드가 호출되면 DB연결을 수행합니다.
        echo "<p>데이터베이스 연결에 성공했습니다.</p>"; 


      $this->getCount();
       $this->getList();
  


    }

}
?>




브라우저에서 결과를 확인 합니다.

결과는 "회원수는 3 명 입니다." 와 회원 테이블의 정보들이 배열형태로 출력될 것입니다.





지금까지는 뷰를 거치지 않고 클래스에서 바로 출력하는 예제를 실행 해봤습니다.
다음 예제에서는 클래스에서 출력하지 않고 해당 클래스와 연결된 뷰에서 데이터를 출력하는 예제를 작성해 보겠습니다.

Posted by webdata
Spac 매뉴얼/MySQL Dao2009. 11. 18. 22:35

성공 메세지가 출력된다면 쿼리문의 실행 예제를 위한 테이블을 만들어보도록 하겠습니다.

회원정보를 저장할 테이블로 "member" 라는 이름의 테이블을 만듭니다. 간단한 필드만 넣어서 만들어보겠습니다.

Create Table `member` (
  `user_id` varchar(12) not null,
  `user_name` varchar(20) not null,
  `reg_date` datetime,
  primary key (`user_id`)
) engine=innodb;



위에서 만든 Member 클래스에  내용을 추가하여 위 테이블의 레코드 수를 화면에 출력 하도록 해봅시다.

* Spac/model/Member.Class.php
<?php
class Member extends Controller {
   
    function Member() {}                  //이번예제는 생성자에서 별도 할일이 없으므로 정의만 해 놓습니다.

    function initMember() {               //맴버클래스 초기화메소드를 만들고 여기서 DB 연결을 합니다.
        $this->getControllerInstance("Dao");        // Dao 클래스를 로드합니다.
        $this->Dao->transaction = true;                    // 트랜젝션을 Start 합니다.
        $this->Dao->Connect();                            // DB를 연결합니다.
    }

    function getCount() {
        $query = " Select count(*) From member ";
        $this->Dao->executeQuery($query);
        echo "<p>회원수는 " . $this->Dao->getResult() ." 명 입니다.</p>";
    }

    function execute() {                                     //Spac의 기본 액션메소드를 정의합니다.
        $this->initMember();                               
//기본메소드가 호출되면 DB연결을 수행합니다.
        echo "<p>데이터베이스 연결에 성공했습니다.</p>"; 


      $this->getCount();

    }

}
?>


getCount() 메소드를 추가 하여 "member"  테이블의 레코드 수가 출력되도록 작성합니다.




브라우저에 다시 한 번 실행결과를 확인합니다.


현재는 레코드가 없으므로 "회원수는 0 명 입니다." 라고 메세지가 출력될 것입니다.



Posted by webdata
Spac 매뉴얼/MySQL Dao2009. 11. 16. 23:38

이제 Dao 를 Spac 프레임웍 내부로 불러와 데이터베이스에 연결하는 예제를 작성해보겠습니다.

회원 테이블을 관리하는 모델클래스를 만듭니다.

회원관리 클래스는 "Member"라는 이름으로 만듭니다.

이번 예제부터는 Spac 컨트롤러의 외부클래스 로드기능을 사용해야 하므로 "Controller" 를 상속받아 작성합니다.

* Spac/model/Member.Class.php
<?php
class Member extends Controller {

    var $Dao;
   
    function Member() {}                

    function initMember() {                            //맴버클래스 초기화메소드를 만들고 여기서 DB 연결을 합니다.
        $this->getControllerInstance("Dao");      // Dao 클래스를 로드합니다.
        $this->Dao->transaction = true;              // 트랜젝션을 Start 합니다.
        $this->Dao->Connect();                        // DB를 연결합니다.
    }

    function execute() {                                 //Spac의 기본 액션메소드를 정의합니다.
        $this->initMember();                           //기본메소드가 호출되면 DB연결을 수행합니다.
        echo "<p>데이터베이스 연결에 성공했습니다.</p>"; 
    }

}
?>

위의 예제는 Spac 컨틀로러의 메소드인 getControllerInstance 를 사용해서 Dao 클래스를 가져왔습니다.
일반적으로 위처럼 사용하면 되지만, 이클립스를 사용하는 경우 코드 자동완성기능을 사용하시려면 직접 Dao 클래스 파일을 삽입하여 사용해야 합니다.


즉, 아래와 같이 사용합니다.
  ==> getControllerInstance 를 사용하지 않는 예제
* Spac/model/Member.Class.php
<?php
require_once("C:\AutoSet6\www\Spac\controller\Dao\Dao.Class.php");
class Member extends Controller {
   
    var $Dao;

    function Member() {}                  //이번예제는 생성자에서 별도 할일이 없으므로 정의만 해 놓습니다.

    function initMember() {               //맴버클래스 초기화메소드를 만들고 여기서 DB 연결을 합니다.

       $this->Dao = new Dao;

        $this->Dao->transaction = true;                    // 트랜젝션을 Start 합니다.
        $this->Dao->Connect();                            // DB를 연결합니다.
    }

    function execute() {                                     //Spac의 기본 액션메소드를 정의합니다.
        $this->initMember();                               //기본메소드가 호출되면 DB연결을 수행합니다.
        echo "<p>데이터베이스 연결에 성공했습니다.</p>"; 
    }

}
?>




위의  두가지 예제의 결과는 모두 같습니다만, 이클립스를 사용하여 개발할 경우 두번째 방법을 사용하면 자동완성기능이 활성화되어 더욱 편하게 개발하실 수 있습니다.





이로서 Database 연결을 구현하였습니다.

브라우저에 아래의 주소를 입력한 후 성공메세지가 출력되는지 확인합니다.


오류가 없었다면 "데이터베이스 연결에 성공했습니다." 라는 메세지가 화면에 출력될 것입니다.





Posted by webdata
Spac 매뉴얼/MySQL Dao2009. 11. 14. 00:26
Mysql 데이터베이스와 연결하여 다양한 기능을 수행하는 어플리케이션을 위한 Database Access Object Controller 입니다.

예제상의 Mysql Dao 는 Mysql 5.x 버전을 토대로 만들어졌으나 4.x  버전 이상이라면 무난하게 사용하실 수 있습니다.
단, Transaction 기능을 사용하시려면 테이블 작성시 "InnoDB" 로 작성하셔야 합니다.



Spac Dao 의 특징은 다음과 같습니다.

* Spac 의 기본 Dao 로서 Spac 프레임웍을 이용해 웹어플리케이션 개발시 쉽게 연동하여 사용할 수 있습니다.

* 일반 변수 대입방식의 쿼리문 및 "?"를 이용한 쿼리바인딩을 지원합니다.

* 정상적으로 종료되지 않은 어플리케이션은 Database를 자동으로 Rollback 시켜줍니다.

* 쿼리문의 로깅을 지원합니다.





Mysql 용 Dao는 네개의 파일로 구성됩니다.

* Dao.Class.php      : Mysql 데이터베이스에 연결하고 쿼리문 실행을 하며 다양한 SQL 작업을 실행합니다.
* Dao.ini                 : Dao 실행에 관련된 설정값 정보를 담고 있습니다.
* DaoConnection.ini   : Mysql 서버에 연결하기 위한 연결 정보를 담고 있습니다.
* DaoTables.ini        : Mysql 서버 계정의 각 테이블명 정보를 담고 있습니다.


Dao 를 Spac에서 사용하기 위해서는 Spac 경로에 Dao를 복사해야 합니다.
Dao를 Spac에서는 컨트롤러로 취급하므로 컨트롤러경로 아래에 "Dao" 라는 디렉토리를 만들고 그 안에 위치시킵니다.
(Spac 기본 패키지에는 Dao가 포함되어 있으므로 참고만 합니다.)

배치의 예는 아래와 같습니다.





먼저 "Dao.Class.php" 파일을 에디터로 열어 Dao 기본경로값인 "$daoPath" 변수값을 자신의 환경에 맞게 고쳐줍니다.
경로값은 웹경로의  "index.php" 파일의 위치에서 부터 현재 파일의 상대경로값을 입력하시거나, 절대경로값을 입력합니다.





그리고 "Dao.ini" 파일을 열어 데이터베이스 연결 정보를 자신의 데이터베이스 연결 환경에 맞게 수정합니다.
아래 경로중 "dbLogFilePath" 값은 반드시 절대경로를 넣어야 합니다.




다음은 "DaoConnection.ini" 파일을 열어 MySQL 접속 정보를 설정합니다.



마지막으로 "DaoTables.ini" 파일을 열어 사용하는 테이블 정보를 입력합니다.
아래 그림을 참조하여 변수명 = "변수값" 의 형태로 작성합니다.
변수명은 적당한 변수명을 입력하시면 되고, 변수값은 해당 변수명에 지정할 실제 테이블명을 입력합니다.

이 테이블 정보는 비즈니스로직에서 데이터베이스 관련 프로세스 수행시 테이블명 입력시 변수로 이를 대신하여 코드를 작성하기 위해 필요하므로, 쿼리문 작성시 테이블명을 변수로 할당하여 사용하지 않고 직접 테이블명을 명시하여 코드를 작성하시는 경우에는 설정하실 필요가 없습니다.



이로서 Dao 를 사용하기 위한 준비를 마쳤습니다.

이제 실제 데이터베이스 연결과 SQL 문의 실행, 결과값 처리, 화면 출력 등 예제를 실행해 보겠습니다.


Posted by webdata