일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 주식
- 실버라이트
- starling
- 마이크로소프트
- 아폴로
- Papervision
- Genome2D
- 책
- stage3d
- Microsoft
- 아폴로케이션
- 물리엔진
- Air
- adobe
- Flex
- Silverlight
- 어도비
- 플래시
- Flash
- XAML
- API
- 워렌 버핏
- framework
- 도서
- 플렉스
- 3.0
- 액션스크립트
- ActionScript
- Papervision3D
- 3D
- Today
- Total
WonHada.com으로 이전
[Adobe AIR] SQLite 기초 강좌 본문
- 데이터베이스는 값들을 구조화하여 입력, 검색 등이 용이하게 만든 자료 저장소입니다..게임을 만들 때 점수를 저장할 수도 있고, 주소록의 이름과 전화번호 등을 저장할 수도 있습니다..
그럼 데이터베이스는 어떻게 구조화 할까요? - 데이터베이스에는 여러 개의 테이블을 넣을 수 있고, 각 테이블에는 여러 개의 필드를 넣을 수 있으며, 각 필드는 여러 개의 컬럼을 넣을 수 있습니다..
HTML 페이지와 비교하면 이해가 빨리 될 것 같네요.. - 하나의 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
}
- DB 파일 만들기
- DB 파일이 없다면 생성한 다음 열고, 있다면 그냥 파일을 엽니다..
var conn:SQLConnection = new SQLConnection(); //DB를 연결합니다..
conn.open(file);
- Table 생성
- DB를 만들었으니 테이블을 생성해야겠죠? 테이블을 생성할 때 필드에 들어갈 컬럼 이름과 데이터 타입들을 함께 입력합니다..
var syntax:String = "CREATE TABLE IF NOT EXISTS testTable (" +
"no INTEGER PRIMARY KEY AUTOINCREMENT," +
"title TEXT," +
"url INTEGER" +
")";
this.sendQuery(syntax);
- Table 확인
- 테이블이 실제 만들어졌는지 확인합니다..
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("테이블이 없습니다.");
}
- 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);
- 데이터가 잘 들어갔는지 확인도 해봐야겠죠?
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]
*/
- 테이블을 삭제할 수도 있어야죠?
var syntax:String = "DROP TABLE testTable";
this.sendQuery(syntax);
- 테이블이 삭제가 되었는지 확인해 봅니다..
- 위 3번 참조
Lite라서 그런지 아기자기한 느낌으로 즐겁게 작업할 수 있어서 좋네요^^플래시(Flash), 플렉스(Flex) 개발자 분들도 AIR 공부하셔서 재밌는거 많이 만들어 보세요~AS 3를 안다면 AIR는 어도비(Adobe)가 그냥 주는 선물입니다 : )
<Adobe AIR의 SQLite 사용법>
데이터베이스(DB)에 대해 아시나요?