air를 이용한 SQLlite 사용하기
개발/FLEX & AIR2011. 1. 13. 13:12
//DB 생성 파일 위치
var dbFile : File = File.desktopDirectory.resolvePath("application.db");
//table생성
var conn:SQLConnection = new SQLConnection(); //DB를 연결합니다..
conn.open(dbFile);
var syntax:String = "CREATE TABLE IF NOT EXISTS testTable (" +
"no INTEGER PRIMARY KEY AUTOINCREMENT," +
"title TEXT," +
"url TEXT" +
")";
sendQuery(conn, syntax);
//스키마 정보 확인
try {
conn.loadSchema();
var schemaResult:SQLSchemaResult = conn.getSchemaResult();
if (schemaResult) {
for(var obj:String in schemaResult.tables){
var table:SQLTableSchema = schemaResult.tables[obj] as SQLTableSchema;
log("[" + table.name + "] 스키마(Schema)");
for(var prop:String in table.columns){
var column:SQLColumnSchema = table.columns[prop] as SQLColumnSchema;
log("name:" + column.name + ",dataType:" + column.dataType + ",primaryKey:" + column.primaryKey + ",allowNull:" + column.allowNull + ",autoIncrement:" + column.autoIncrement + ",defaultCollationType:" + column.defaultCollationType);
}
}
}
} catch(e:Error) {
log("테이블이 없습니다.");
}
//등록
syntax = "INSERT INTO testTable (title, url) VALUES ('Adobe AIR Devpia.', 'http://airdev.tistory.com/')"; //no는 자동으로 증가
sendQuery(conn, syntax);
syntax = "INSERT INTO testTable (title, url) VALUES ('아폴로케이션[Apollocation]', 'http://cafe.naver.com/apollocation')"; //no는 자동으로 증가
sendQuery(conn, 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++){
log("필드 번호 :" + i);
for(var columnName:String in result[i]){
log(columnName + " :" + result[i][columnName]);
}
}
}
);
sendQuery(conn, syntax, -1, responder);
//DB 삭제
syntax = "DROP TABLE testTable";
sendQuery(conn, syntax);
private function sendQuery(conn:SQLConnection, syntax:String, prefetch:int=-1, responder:Responder=null):void { //쿼리 실행
var stm:SQLStatement = new SQLStatement();
stm.sqlConnection = conn;
stm.text = syntax;
stm.execute(prefetch, responder); //prefetch : 가져올 데이터 개수(-1이면 모두), responder : 결과, 상태 Responder
}
var dbFile : File = File.desktopDirectory.resolvePath("application.db");
//table생성
var conn:SQLConnection = new SQLConnection(); //DB를 연결합니다..
conn.open(dbFile);
var syntax:String = "CREATE TABLE IF NOT EXISTS testTable (" +
"no INTEGER PRIMARY KEY AUTOINCREMENT," +
"title TEXT," +
"url TEXT" +
")";
sendQuery(conn, syntax);
//스키마 정보 확인
try {
conn.loadSchema();
var schemaResult:SQLSchemaResult = conn.getSchemaResult();
if (schemaResult) {
for(var obj:String in schemaResult.tables){
var table:SQLTableSchema = schemaResult.tables[obj] as SQLTableSchema;
log("[" + table.name + "] 스키마(Schema)");
for(var prop:String in table.columns){
var column:SQLColumnSchema = table.columns[prop] as SQLColumnSchema;
log("name:" + column.name + ",dataType:" + column.dataType + ",primaryKey:" + column.primaryKey + ",allowNull:" + column.allowNull + ",autoIncrement:" + column.autoIncrement + ",defaultCollationType:" + column.defaultCollationType);
}
}
}
} catch(e:Error) {
log("테이블이 없습니다.");
}
//등록
syntax = "INSERT INTO testTable (title, url) VALUES ('Adobe AIR Devpia.', 'http://airdev.tistory.com/')"; //no는 자동으로 증가
sendQuery(conn, syntax);
syntax = "INSERT INTO testTable (title, url) VALUES ('아폴로케이션[Apollocation]', 'http://cafe.naver.com/apollocation')"; //no는 자동으로 증가
sendQuery(conn, 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++){
log("필드 번호 :" + i);
for(var columnName:String in result[i]){
log(columnName + " :" + result[i][columnName]);
}
}
}
);
sendQuery(conn, syntax, -1, responder);
//DB 삭제
syntax = "DROP TABLE testTable";
sendQuery(conn, syntax);
private function sendQuery(conn:SQLConnection, syntax:String, prefetch:int=-1, responder:Responder=null):void { //쿼리 실행
var stm:SQLStatement = new SQLStatement();
stm.sqlConnection = conn;
stm.text = syntax;
stm.execute(prefetch, responder); //prefetch : 가져올 데이터 개수(-1이면 모두), responder : 결과, 상태 Responder
}
'개발 > FLEX & AIR' 카테고리의 다른 글
flashBuilder 4.5 plug-in의 메뉴가 한글로 나올때 해결법 (0) | 2011.06.23 |
---|---|
BitmapData를 PNG나 JPG로 변환하여 ByteArray로 서버에 전송하는 방법 (0) | 2011.01.13 |
Flex DataGrid Tooltip dataTipFunction Example (0) | 2010.11.11 |
[Flex] flex Image, bitmap등의 결과물을 인쇄 및 저장하기 (0) | 2010.08.25 |
[FLEX] Flex 상에서 stage가 null 일경우 (0) | 2010.08.20 |