본문 바로가기
Adobe AIR

[Adobe AIR] SQLite 기초 강좌

by Juelria 2007. 12. 28.
728x90
반응형
SMALL


 

    <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)가 그냥 주는 선물입니다 : )








728x90
반응형
LIST