'Local DB Table'에 해당되는 글 1건

  1. 2009.02.15 Local DB Table만들기
AIR/local SQL활용2009. 2. 15. 11:49

AIR에서는 SQLLite엔진을 제공하고 있다. 따라서 로컬상에 DB를 기록하거나 가져오거나 편집이 가능하며 프로세스도 다른 서버사이드 언어와 마찬가지로 접근-열기-편집-닫기와 같다.

[ DB를 활용하기위한 객체 프로세스 ]
1 : File을 설정하여 사용할 DB로 경로설정
2 : SQLConnection을 사용하여 경로상의 DB오픈 - open()/openAsysc()
3 : SQLStatement를 사용하여 쿼리전송(DB작업) - excute() / next()
4 : SQLConnection.close() 를 통해 작업후 DB를 닫아준다.
   
[관련이벤트]
SQLEvent : SQLConnection 또는 SQLStatement 인스턴스에서 수행된 작업 이벤트

[ 내문서에 DBTest데이터를 만들고 testDB테이블을 만든다 ]
SQL쿼리문중에 CREATE TABLE을 이용하여 로컬에 데이터를 만들어 본다.
var file:File = File.documentsDirectory.resolvePath("DBTest.db");    //경로 설정
var connection:SQLConnection = new SQLConnection();         //DB연결
var statement:SQLStatement = new SQLStatement();           //DB관리

//DB연결자에 경로와 모드설정
connection.openAsync( file , SQLMode.CREATE );    
[ SQLMode ]
SQLMode에는 3개가 있다.
- CREATE : 업데이트를 위해 연결이 열리고 지정한 파일이 없는 경우 데이터베이스 파일을 만든다는 것을
                    나타냅니다.
- READ: 연결이 읽기 전용 모드로 열린다는 것을 나타냅니다.
- UPDATE : 업데이트를 위해 연결이 열리지만 지정한 파일이 없는 경우 새 데이터베이스 파일을 만들지
                   않는다는 것을 나타냅니다.


//DB연결 이벤트
connection.addEventListener( SQLEvent.OPEN , onOpen );  
    
//SQL관리자에 연결자등록
statement.sqlConnection = connection;        
statement.addEventListener( SQLEvent.RESULT , onResult );
     
//SQL 오픈
function onOpen( e:SQLEvent ):void
{
//만약 testDB이 없으면 새로운 테이블을 생성하라..
statement.text = "CREATE TABLE IF NOT EXISTS testDB(" +
       "no INTEGER PRIMARY KEY AUTOINCREMENT," +
       "name VARCHAR," +
       "date DATE," +
       "content TEXT" +
       ")";
       
//-1은 모든 데이터의 결과를 반환 받는다.
statement.execute();
}
    
//SQL실행 후 연결자 종료
function onResult( e:SQLEvent ):void
{
connection.close()
}

참고) SQL명령문
Posted by 버터백통