DBLibrary.js

1 소스 코드[ | ]

import System.Data;
import System.Collections.Generic;
import Mono.Data.Sqlite;

class DBLibrary {
	private var db_uri = "URI=file:mydb.db";
	
	function query(q: String) {
		var con: IDbConnection = new SqliteConnection(db_uri);
		con.Open();
		var cmd: IDbCommand = con.CreateCommand();
		cmd.CommandText = q;
		
		var reader: IDataReader = cmd.ExecuteReader();
		reader.Close();
		cmd.Dispose(); 
		con.Close(); 
	}
	
	function query_rows(q: String) {
		var con: IDbConnection = new SqliteConnection(db_uri);
		con.Open();
		var cmd: IDbCommand = con.CreateCommand();
		cmd.CommandText = q;
		
		var reader: IDataReader = cmd.ExecuteReader();
		var rows = new ArrayList();
		while( reader.Read() ) { 
			var row = new Dictionary.<String,String>();
			for (var i = 0; i < reader.FieldCount; i++) {
				row.Add(reader.GetName(i).ToString(), reader.GetValue(i).ToString());
			}
			rows.Add(row);
		}
		reader.Close();
		cmd.Dispose(); 
		con.Close(); 
		return rows;
	} 
	
	function query_str(q: String) {
		var rows:ArrayList = query_rows(q);
		if(rows.Count<1) return null;
		var row: Dictionary.<String,String> = rows[0];
		for( var kvp: KeyValuePair.<String,String> in row ) return kvp.Value;
		return null;
	}
	
	function query_int(q: String) {
		var str: String = query_str(q);
		if( str == null ) return null;
		var res: int = parseInt(str);
		return res;
	}

	function query_float(q: String) {
		var str: String = query_str(q);
		if( str == null ) return null;
		var res: float = parseFloat(str);
		return res;
	}
	
	function print_rows(rows: ArrayList) {
	        var rows_cnt: int = rows.Count;
	        var res: String = "";
	        for( var i=0; i<rows_cnt; i++) {
	                res += "[ "+(i+1)+" / "+rows_cnt+" ] => (\n"; 
	                var row: Dictionary.<String,String> = rows[i];
	                for( var kvp: KeyValuePair.<String,String> in row ) {
	                        res += "  [" + kvp.Key + "]=[" + kvp.Value + "]\n" ;
	                }
	                res += ")\n";
	        }
	        Debug.Log( res );
	}
	
	function print_row(row: Dictionary.<String, String>) {
	        var res: String = "(\n";
	        for( var kvp: KeyValuePair.<String,String> in row ) {
	                res += "  [" + kvp.Key + "]=[" + kvp.Value + "]\n" ;
	        }
	        res += ")";
	        Debug.Log( res );
	}
}

2 활용 예시[ | ]

var db = new DBLibrary();
var rows = db.query_rows("SELECT name FROM sqlite_master WHERE type='table'");
db.print_rows(rows);

3 테스트 예시[ | ]

table1이라는 테이블을 생성, row 2개를 입력하고 출력해봄

function Start () {
	var db:DBLibrary = new DBLibrary();
	
	var cnt:int = db.query_int("SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='table1'");
	Debug.Log("cnt="+cnt);
	if(cnt>0) {
		db.query("DROP TABLE table1");
		Debug.Log("table1 already exists... and deleted.");
	}
	db.query("CREATE TABLE table1 (id INTEGER, str TEXT)");
	db.query("INSERT INTO table1 (id, str) VALUES (99, 'HELLO')");
	db.query("INSERT INTO table1 (id, str) VALUES (88, 'WORLD')");
	
	var rows = db.query_rows("SELECT * FROM table1");
	db.print_rows(rows);
}

4 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}