Skip to content

devmario/SQLJsonData

Repository files navigation

이 라이브러리는 sqlite를 이용하여 controller에서 굳이 view에게 변경사항을 전달하지 않아도 되게 할려고 만든 라이브러리입니다.

  • http://jsoncpp.sourceforge.net/ 에서 jsoncpp 다운로드(SQLJson을 사용할라면 jsoncpp필요)

  • sqlite3필요

  • SQLJsonQuery.h의 DB_PATH설정(사용할 db경로:최초 한번 코드호출시 생성됨) 만일 4번의json을 바꾸면 이파일을 삭제시켜야함

  • SQLJsonQuery.h의 DB_INFO_PATH설정(db의 스키마 정보 json경로) SQLJson이 실행되면(최초) 이파일을 불러들여 테이블을 생성함 sql.json에 sample스키마가 들어있음

  • sql.json설명 default_table_field:이 필드들은 모든 테이블에 자동적으로 추가된다.추가시키기 싫으면 include_default_table_field을 false로 설정 table 생성되는 테이블 스키마들이다.name은 table이름이다. query는 쿼리에대한 태그와 쿼리포매터로 이루어져 있다

  • 다음은 샘플임

  //셀렉트(포매터,sql.json확인해보삼)
	std::vector<SQLJson::Data*> _vec0 = SQLJson::Query::Share()->Select("select_user_by_id", 1);
	if(_vec0.size() > 0) {
		std::cout << _vec0[0]->toStyledString() << _vec0[0]->GetRetainCount() << "\n" << _vec0[0]->GetUpdateCount() << "\n";
		_vec0[0]->Update(_test, true);
		//있으면 업데이트
	} else {
		//없으면 추기
		SQLJson::Query::Share()->Add("user", _test, true);
	}

	//이상테는 메모리에 SQLJson::Data가 1개 올라가있음(이전 쿼리가 Add되었다면 0개)

	//셀렉트(포매터,sql.json확인해보삼)
	std::vector<SQLJson::Data*> _vec1 = SQLJson::Query::Share()->Select("select_user_by_id", 1);
	for(int i = 0; i < _vec1.size(); i++) {
		std::cout << _vec1[i]->toStyledString() << _vec1[i]->GetRetainCount() << "\n" << _vec1[i]->GetUpdateCount() << "\n";
		(*_vec1[i])["name"] = "modify";
		//데이터바꾸기(바꾸고 업데이트)
		_vec1[i]->Update(true);
	}

	//이상테는 메모리에 SQLJson::Data가 2개 올라가있음

	//셀렉트(포매터,sql.json확인해보삼)
	std::vector<SQLJson::Data*> _vec2 = SQLJson::Query::Share()->Select("select_user_by_id", 1);

	//이상테는 메모리에 SQLJson::Data가 3개 올라가있음

	for(int i = 0; i < _vec2.size(); i++) {
		//출력후 메모리에서 내림
		std::cout << _vec2[i]->toStyledString() << _vec2[i]->GetRetainCount() << "\n" << _vec2[i]->GetUpdateCount() << "\n";
		_vec2[i]->Release();
	}
	for(int i = 0; i < _vec1.size(); i++) {
		//출력후 메모리에서 내림
		std::cout << _vec1[i]->toStyledString() << _vec1[i]->GetRetainCount() << "\n" << _vec1[i]->GetUpdateCount() << "\n";
		_vec1[i]->Release();
	}
	for(int i = 0; i < _vec0.size(); i++) {
		//출력후 메모리에서 내림
		std::cout << _vec0[i]->toStyledString() << _vec0[i]->GetRetainCount() << "\n" << _vec0[i]->GetUpdateCount() << "\n";
		_vec0[i]->Release();
	}
  • SQLJson::Data의 GetUpdateCount와 GetIsLive를 매프레임마다 체크하여 화면에서 데이터 변경상태를 보여주세요 GetUpdateCount는 SQL Update문에 올라가면 해당Data에 대해서 카운트를 1올려줍니다. GetIsLive는 필드에서 DELETE됬을때 false로 바뀝니다.

  • 화면에서 더이상 데이터가 필요하지 않으면(출력하지 않으면) 메모리에서 내리기 위하여 Release를 호출하세요 sqlite에데이터는 계속 존제합니다.

About

sql database - json : auto binder

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages