KnP House for Daily

[Tizen Native App] Db Manager 본문

Tizen/Tizen 개발

[Tizen Native App] Db Manager

K.ung 2014.06.10 18:03

Tizen Native App에서 디바이스 내장 Database를 사용하고자 할떄는 



사용 할 수 있다.


디바이스 내장 DB는 안드로이드의 SQLite 와 흡사하며, 쿼리문이 MYSQL과 같아서 쉽게 사용 가능 하다.



1. Create Database


 
	Tizen::Io::Database* myDb;
	Tizen::Io::DbStatement* pStmt;
	Tizen::Io::DbEnumerator* __pEnum;

	result r = E_SUCCESS;

	String sql = "CREATE TABLE IF NOT EXISTS businform ( id INTEGER PRIMARY KEY, stationName TEXT, stationId TEXT )";

	String dbPath = App::GetInstance()->GetAppDataPath() + "businform.db";

	myDb = new Database;

	if(!myDb){
		AppLog("!myDb");
		goto CATCH;
	}

	r = myDb->Construct(dbPath,"a+");

	if(IsFailed(r)){
		AppLog("myDb->Construct error");
		goto CATCH;
	}

	r = myDb->ExecuteSql(sql,true);

	if(IsFailed(r)){
		AppLog("myDb->ExecuteSql error");
		goto CATCH;
	}

Database, DbStatement를 이용하여 Database를 사용 생성 할 수 있다.

Construct() 에서 Database와 option값을 설정하여 초기화 해주며,
ExecuteSql() 로 쿼리문을 던질 수 있다.


2. Insert Data


 
	Tizen::Io::Database* myDb;
	Tizen::Io::DbStatement* pStmt;
	Tizen::Io::DbEnumerator* __pEnum;

	String insertSql = "INSERT INTO businform (id, stationName, stationId) VALUES (?, ?, ?)";

	pStmt = myDb->CreateStatementN(insertSql);

	int size = busNameList->GetCount();

	for(int i=0 ; i<size ; i++){
		String busName = null;
		String busNum = null;

		pStmt->BindInt(1,i);
		pStmt->BindString(2,busName);
		pStmt->BindString(3,busNum);

		__pEnum = myDb->ExecuteStatementN(*pStmt);

		AppAssert(!__pEnum);
	}

	myDb->CommitTransaction();

	delete pStmt;


Data를 Insert 할 때 는 CreateStatementN()을 이용하여 쿼리를 날려 준다.


그리고, 삽입할 데이터는 BindString() 을 이용하여 지정하고, ExecuteStatementN()을 하면 된다!!


쉽다....



저작자 표시 비영리 변경 금지
신고
2 Comments
댓글쓰기 폼