WonHada.com으로 이전

[Adobe AIR] SQLite 기초 강좌 본문

Adobe AIR

[Adobe AIR] SQLite 기초 강좌

반주부 2007. 12. 28. 16:04
반응형


 

    <Adobe AIR SQLite 사용법>


    데이터베이스(DB) 대해 아시나요?


  1. 데이터베이스는 값들을 구조화하여 입력, 검색 등이 용이하게 만든 자료 저장소입니다..게임을 만들 점수를 저장할 수도 있고, 주소록의 이름과 전화번호 등을 저장할 수도 있습니다..


    그럼
    데이터베이스는 어떻게 구조화 할까요?

  2. 데이터베이스에는 여러 개의 테이블을 넣을 있고, 테이블에는 여러 개의 필드를 넣을 있으며, 필드는 여러 개의 컬럼을 넣을 있습니다..


    HTML
    페이지와 비교하면 이해가 빨리 같네요..

  3. 하나의 HTML 페이지(데이터베이스)에는 여러 개의 <table>(테이블) 넣을 있고, 각 <table>에는 여러 개의 <tr>(필드) 넣을 있고, <tr>에는 여러 개의 <td>(컬럼) 넣을 있습니다..


    데이터베이스는
    이해가 되었으니 이제 AIR에서 어떻게 DB 파일을 만들고 사용하는지 알아보겠습니다..


    일단
    , SQLite 대해 간단하게 설명드리죠..


    SQLite 하나의 파일로 데이터베이스이며, 기존 SQL 구문의 대부분을 지원하고, 비교적 상당히 빠릅니다..또한, 데이터 타입이 다른 DB(컬럼 중심) 달리 상당히 유연해서( 중심) 초보자가 다루기 편합니다..

    , 데이터 입력, 검색등이 많은 프로젝트나 상에서의 프로젝트에는 적합하지 않습니다..개인 또는 소규모의 사람들이 사용하는 프로그램의 DB로는 최상이라 있습니다..


    일단, DB파일로 사용할 파일 경로를 지정합니다..찾기 쉽도록 바탕화면에 만들죠..

    var file:File = File.desktopDirectory.resolvePath("test.db"); //바탕화면에 DB파일 생성


    그리고 중복 코드를 피하기 위해 쿼리를 실행하는 함수를 하나 만듭니다..

    function sendQuery(syntax:String, prefetch:int=-1,
    responder:Responder=null):void {
    //쿼리 실행

    var stm:SQLStatement = new SQLStatement();

    stm.sqlConnection = this.conn;

    stm.text = syntax;

    stm.execute(prefetch, responder); //prefetch : 가져올 데이터 개수(-1이면 모두), responder : 결과, 상태 Responder

    }


  4. DB 파일 만들기
  5. DB 파일이 없다면 생성한 다음 열고, 있다면 그냥 파일을 엽니다..

    var conn:SQLConnection = new SQLConnection(); //DB 연결합니다..

    conn.open(file);


  6. Table 생성
  7. DB 만들었으니 테이블을 생성해야겠죠? 테이블을 생성할 필드에 들어갈 컬럼 이름과 데이터 타입들을 함께 입력합니다..

    var syntax:String = "CREATE TABLE IF NOT EXISTS testTable (" +

    "no INTEGER PRIMARY KEY AUTOINCREMENT," +

    "title TEXT," +

    "url INTEGER" +

    ")";

    this.sendQuery(syntax);


  8. Table 확인
  9. 테이블이 실제 만들어졌는지 확인합니다..

    try {

    this.conn.loadSchema();

    var schemaResult:SQLSchemaResult = this.conn.getSchemaResult();

    if (schemaResult) {

    for(var obj:String in schemaResult.tables){

    var table:SQLTableSchema = schemaResult.tables[obj] as SQLTableSchema;

    trace("[" + table.name + "]", "스키마(Schema)");

    for(var prop:String in table.columns){

    var column:SQLColumnSchema = table.columns[prop] as SQLColumnSchema;

    trace("name:", column.name, ",dataType:", column.dataType, ",primaryKey:", column.primaryKey, ",allowNull:", column.allowNull, ",autoIncrement:", column.autoIncrement, ",defaultCollationType:", column.defaultCollationType);

    }

    }

    }

    } catch(e:Error) {

    trace("테이블이 없습니다.");

    }


  10. DB 만들어 졌습니다..간단하죠? 이제 데이터를 넣어보겠습니다..

    var syntax:String;

    syntax = "INSERT INTO testTable (title, url) VALUES ('Adobe AIR Devpia.', 'http://airdev.tistory.com/')"; //no는 자동으로 증가

    this.sendQuery(syntax);

    syntax = "INSERT INTO testTable (title, url) VALUES ('아폴로케이션[Apollocation]', 'http://cafe.naver.com/apollocation')"; //no는 자동으로 증가

    this.sendQuery(syntax);


  11. 데이터가 들어갔는지 확인도 해봐야겠죠?

    var syntax:String = "SELECT * FROM testTable";

    var responder:Responder = new Responder(

    function(e:SQLResult):void {

    var result:Array = e.data;

    var numRows:int = result.length;

    for(var i:int = 0; i < numRows; i++){

    trace("필드 번호 :", i);

    for(var columnName:String in result[i]){

    trace(columnName + " :", result[i][columnName]);

    }

    }

    }

    );

    this.sendQuery(syntax, -1, responder);


    /*

    필드 번호 : 0

    no : 1

    url : http://airdev.tistory.com/

    title : Adobe AIR Devpia.

    필드 번호 : 1

    no : 2

    url : http://cafe.naver.com/apollocation

    title : 아폴로케이션[Apollocation]

    */


  12. 테이블을 삭제할 수도 있어야죠?

    var syntax:String = "DROP TABLE testTable";

    this.sendQuery(syntax);


  13. 테이블이 삭제가 되었는지 확인해 봅니다..
  14. 3 참조


    Lite
    라서 그런지 아기자기한 느낌으로 즐겁게 작업할 있어서 좋네요^^

    플래시(Flash), 플렉스(Flex) 개발자 분들도 AIR 공부하셔서 재밌는거 많이 만들어 보세요~AS 3 안다면 AIR 어도비(Adobe) 그냥 주는 선물입니다 : )








반응형