void GetAllVisiter(int64 ParentID, vector<int64>& VisiterList,int64 NotIncludeChildID/*=0*/){ char TableName[30]; int64toa(ParentID,TableName); if(!GetWorldDB().tableExists(TableName)){ return ; } CppSQLite3Buffer SQL; SQL.format("select %s from \"%s\" where %s>%d", ITEM_ID, TableName, ITEM_TYPE, OBJECT_SPACE ); CppSQLite3Query Result = GetWorldDB().execQuery(SQL); if(Result.eof())return ; while(!Result.eof()){ int64 ChildID = Result.getInt64Field(0); if (ChildID != NotIncludeChildID) { VisiterList.push_back(ChildID); } Result.nextRow(); } }
void CBrainMemory::DeleteChild(int64 ParentTable,int64 ChildRoomValue,int64 ChildRoomType){ int64 ChildID = GetChildID(ParentTable,ChildRoomValue,ChildRoomType); if(ChildID==0)return ; CppSQLite3Buffer SQL; char buf[30]; int64toa(ChildID,buf); //先删除子表 if(BrainDB.tableExists(buf)){ SQL.format("DROP TABLE \"%s\"",buf); BrainDB.execDML(SQL); } //然后删除子条目 char Father[30]; int64toa(ParentTable,Father); SQL.format("delete from \"%s\" where %s = \"%s\" ",Father,RB_SPACE_ID,buf); BrainDB.execDML(SQL); //最后删除索引 ToLBrain(ChildRoomValue); int64toa(ChildRoomValue,Father); SQL.format("delete from \"%s\" where %s = \"%s\" ",Father,LB_CHILD_ID,buf); }
bool DBSetting::GetValue(long lKey,std::string &strValue) { //打开数据库 CppSQLite3DB dbTask; dbTask.open(m_strDB.c_str()); CheckCreateSettingTable(dbTask); CppSQLite3Buffer strSql; try{ strSql.format("select value from T_Setting where key=%d;",lKey); CppSQLite3Query q = dbTask.execQuery(strSql); if (q.eof()) { return false; } strValue = q.getStringField(0); } catch(CppSQLite3Exception &exp) { exp; ATLTRACE("error:%s\n",exp.errorMessage()); ATLASSERT(FALSE); return false; } return true; }
/* int32 CBrainMemory::GetAllMeaning(int64 ID, map<int64,int64> &MeaningList){ CppSQLite3Buffer SQL; CppSQLite3Query Result; char a[30]; char b[30]; MeaningList.clear(); // if(!RBrainHasTable(ID))return 0; ToRBrain(ID); SQL.format("select %s, %s from \"%s\" where %s=\"%s\" ;", RB_SPACE_ID, RB_SPACE_VALUE, _i64toa(ID,a,10), RB_SPACE_TYPE, _i64toa(MEMORY_TYPE_MEANING,b,10) ); Result = BrainDB.execQuery(SQL); while(!Result.eof()) { MeaningList[Result.getInt64Field(1)] = Result.getInt64Field(0); Result.nextRow(); } return MeaningList.size(); } */ int32 CBrainMemory::GetAllMeaningRoomID(int64 ID, deque<int64>& MeaningRoomIDList){ CppSQLite3Buffer SQL; CppSQLite3Query Result; char a[30],b[30]; MeaningRoomIDList.clear(); // if(!RBrainHasTable(ID))return 0; ToRBrain(ID); int64toa(ID,a); int64toa(MEMORY_BODY,b); SQL.format("select %s from \"%s\" where %s > \"%s\";", RB_SPACE_ID, a, RB_SPACE_TYPE, b ); Result = BrainDB.execQuery(SQL); while(!Result.eof()) { MeaningRoomIDList.push_back(Result.getInt64Field(0)); Result.nextRow(); } return MeaningRoomIDList.size(); }
uint32 CBrainMemory::GetAllPartOfSpeech(int64 ParentID){ CppSQLite3Buffer SQL; char a[30],b[30],c[30]; uint32 PartOfSpeech = 0; // if(!RBrainHasTable(ID))return 0; ToRBrain(ParentID); int64toa(ParentID,a); int64toa(PARTOFSPEECH_START,b); int64toa(PARTOFSPEECH_END,c); SQL.format("select %s from \"%s\" where %s > \"%s\" AND %s< \"%s\";", RB_SPACE_TYPE, a, RB_SPACE_TYPE, b, RB_SPACE_TYPE, c ); CppSQLite3Table t = BrainDB.getTable(SQL); for (int row = 0; row < t.numRows(); row++) { t.setRow(row); int64 type = t.getInt64Field(0); PartOfSpeech |= (uint32)((type-PARTOFSPEECH_START)); } return PartOfSpeech; }
void CBrainMemory::GetCustomCommandText(int64 LogicID, deque<tstring>& CommanTextList){ int64 FatherID,ChildID,RoomType; char buf[30]; CppSQLite3Buffer SQL; if(LBrainHasTable(LogicID)){ //索引空间是否有表,有则表示其为其它空间的空间值 //根据索引表得到其作为空间值时的空间存储ID,存入种子表 ToLBrain(LogicID); int64toa(LogicID,buf); SQL.format("select %s,%s from \"%s\" ;",LB_FATHER_ID,LB_CHILD_ID,buf); CppSQLite3Table t0 = BrainDB.getTable(SQL); for (int row = 0; row < t0.numRows(); row++) { t0.setRow(row); FatherID = t0.getInt64Field(0); ChildID = t0.getInt64Field(1); if(ChildID == -LogicID)continue; RoomType = GetChildType(FatherID,ChildID); if(RoomType == MEMORY_INSTINCT){ //看是否文本空间修饰RoomID tstring Text; if(RetrieveAction(ChildID,LogicID,Text,false)){ if(Text.size())CommanTextList.push_back(Text); } } } } }
int CDbMeter::JoinTableDelete(const char* dbfilename) { try { CppSQLite3DB db; db.open(dbfilename); CppSQLite3Buffer bufSQL; CppSQLite3Table t; db.execDML("CREATE TABLE IF NOT EXISTS jointable (joinkey INTEGER PRIMARY KEY, EUI64ID CHAR(17), jointry INTEGER);"); bufSQL.format("SELECT * FROM jointable;"); t = db.getTable(bufSQL); if( t.numRows() == 0 ) { XDEBUG("Failure: Don't have JoinTable\r\n"); } else { db.execDML("DROP TABLE joinTable;"); } } catch( CppSQLite3Exception& e ) { XDEBUG("%s\r\n",e.errorMessage()); return e.errorCode(); } return SQLITE_OK; }
void CVoxSQLite::GetMergedContacts( const char* parent_username, MergedContacts& rList ) { CppSQLite3Buffer buf; buf.format( "SELECT * from [MergedContact] WHERE [parent_username] = %Q;", parent_username ); try { CppSQLite3Statement stmt = m_db.compileStatement( (const char*)buf ); int nContactId = 0; std::string type = ""; CppSQLite3Query q = stmt.execQuery(); MergedContact mc; //Process record set. while (!q.eof()) { mc.setParentUsername( q.getStringField( 0 ) ); mc.setUsername ( q.getStringField( 1 ) ); rList.Add( &mc ); q.nextRow(); } stmt.reset(); } catch (CppSQLite3Exception& e) { e.errorCode(); } }
void CVoxSQLite::GetGroups( const char* username, Groups& rList ) { CppSQLite3Buffer buf; buf.format( "SELECT * from [Group] WHERE [username] = %Q;", username ); try { CppSQLite3Statement stmt = m_db.compileStatement( (const char*)buf ); int nContactId = 0; std::string type = ""; CppSQLite3Query q = stmt.execQuery(); Group grp; //Process record set. while (!q.eof()) { grp.setUsername( q.getStringField( 0 ) ); grp.setName ( q.getStringField( 1 ) ); rList.Add( &grp ); q.nextRow(); } stmt.reset(); } catch (CppSQLite3Exception& e) { e.errorCode(); } }
int32 CLogicThread::GetActionRoom(int64 ParentID,ClauseLogicSense* cls){ CppSQLite3Buffer SQL; char a[30],b[30]; uint32 PartOfSpeech = 0; // if(!RBrainHasTable(ID))return 0; map<int64,MeaningPos>& RoomList = cls->ClauseMeaning; ToRBrain(ParentID); int64toa(ParentID,a); int64toa(MEMORY_INSTINCT,b); SQL.format("select %s,%s from \"%s\" where %s = \"%s\" ;", RB_SPACE_ID, RB_SPACE_VALUE, a, RB_SPACE_TYPE, b ); CppSQLite3Table t = BrainDB.getTable(SQL); for (int row = 0; row < t.numRows(); row++) { t.setRow(row); int64 ID = t.getInt64Field(0); int64 Value = t.getInt64Field(1); MeaningPos Pos; Pos.RoomID = ID; Pos.ParamTokenPos = cls->NextTokenPos; RoomList[Value] = Pos; } return RoomList.size(); }
void DBLog::Log( const char *pModel,int code,int value1,int value2, const char *pMessage ) { //打开数据库 CppSQLite3DB dbTask; dbTask.open(m_strDB.c_str()); CheckCreateLogTable(dbTask); CppSQLite3Buffer strSql; strSql.format("insert into T_Log values(NULL,'%q',%d,%d,%d,%d,'%q');", pModel,GlobeFuns::TimeToInt(CTime::GetCurrentTime()),code,value1,value2,pMessage ); try{ if(1!=dbTask.execDML(strSql)) { ATLASSERT(FALSE); return; } } catch(CppSQLite3Exception &exp) { exp; ATLTRACE("error:%s\n",exp.errorMessage()); ATLASSERT(FALSE); return; } }
int32 CBrainMemory::GetAllPartOfSpeechRoom(int64 ParentID,map<int64,int64>& RoomList) { CppSQLite3Buffer SQL; char a[30],b[30],c[30]; uint32 PartOfSpeech = 0; // if(!RBrainHasTable(ID))return 0; ToRBrain(ParentID); int64toa(ParentID,a); int64toa(PARTOFSPEECH_START,b); int64toa(PARTOFSPEECH_END,c); SQL.format("select %s,%s from \"%s\" where %s > \"%s\" AND %s< \"%s\";", RB_SPACE_ID, RB_SPACE_TYPE, a, RB_SPACE_TYPE, b, RB_SPACE_TYPE, c ); CppSQLite3Table t = BrainDB.getTable(SQL); for (int row = 0; row < t.numRows(); row++) { t.setRow(row); int64 ID = t.getInt64Field(0); int64 Type = t.getInt64Field(1); RoomList[ID] = Type; } return RoomList.size(); }
void CBrainMemory::SetSystemItem(int64 Item,AnsiString Info){ CppSQLite3Buffer SQL; CppSQLite3Query Result; char a[30],b[30]; int64toa(ROOM_SYSTEM,a); int64toa(Item,b); SQL.format("select b from \"%s\" where a = \"%s\";",a,b); Result = BrainDB.execQuery(SQL); bool Find = !Result.eof(); Result.finalize(); if(!Find){ SQL.format("insert into \"%s\" values (\"%s\", ?)", a, b); }else{ SQL.format("update \"%s\" set b = ? where a = \"%s\";", a, b ); } CppSQLite3Statement State = BrainDB.compileStatement(SQL); State.bind(1,Info.c_str()); //替换第一个问号 State.execDML(); }
int CDbMeter::JoinTableShow(const char* dbfilename) { try { CppSQLite3DB db; db.open(dbfilename); CppSQLite3Buffer bufSQL; CppSQLite3Table t; db.execDML("CREATE TABLE IF NOT EXISTS jointable (joinkey INTEGER PRIMARY KEY, EUI64ID CHAR(17), jointry INTEGER);"); bufSQL.format("SELECT * FROM jointable;"); t = db.getTable(bufSQL); for ( int row = 0; row < t.numRows(); row++) { t.setRow(row); for (int fld=0; fld<t.numFields(); fld++) { if( !t.fieldIsNull(fld)) XDEBUG("%s | ", t.fieldValue(fld)); } XDEBUG("\r\n"); } } catch( CppSQLite3Exception& e ) { XDEBUG("%s\r\n",e.errorMessage()); return e.errorCode(); } return SQLITE_OK; }
int CDbMeter::JoinTableAdd(const char* dbfilename, char* szID) { try { CppSQLite3DB db; db.open(dbfilename); CppSQLite3Buffer bufSQL; CppSQLite3Table t; db.execDML("CREATE TABLE IF NOT EXISTS jointable (joinkey INTEGER PRIMARY KEY, EUI64ID CHAR(17), jointry INTEGER);"); bufSQL.format("SELECT * FROM jointable WHERE EUI64ID=%Q", szID); t = db.getTable(bufSQL); if( t.numRows() == 0 ) { bufSQL.clear(); bufSQL.format("INSERT INTO jointable(EUI64ID, jointry) VALUES(%Q, %d);", szID, 0); db.execDML(bufSQL); } else XDEBUG("Jointable ID Duplicate!!\r\n"); db.close(); } catch( CppSQLite3Exception& e ) { XDEBUG("%s\r\n",e.errorMessage()); return e.errorCode(); } return SQLITE_OK; }
int64 CBrainMemory::GetChildType(int64 ParentRoomID,int64 ChildRoomID){ ToRBrain(ParentRoomID); if(!RBrainHasTable(ParentRoomID))return 0; CppSQLite3Buffer SQL; CppSQLite3Query Result; char a[30],b[30]; assert(ChildRoomID != 0 ); int64toa(ParentRoomID,a); int64toa(ChildRoomID,b); SQL.format("select \"%s\" from \"%s\" where \"%s\" = \"%s\" ", RB_SPACE_TYPE, a, RB_SPACE_ID, b ); Result = BrainDB.execQuery(SQL); if(Result.eof())return 0; int64 ChildType = Result.getInt64Field(0); return ChildType; };
int64 CBrainMemory::GetChildID(int64 ParentRoom,int64 ChildRoomValue,int64 ChildRoomType) { ToRBrain(ParentRoom); int64 ChildID; if(!RBrainHasTable(ParentRoom))return 0; CppSQLite3Buffer SQL; CppSQLite3Query Result; char a[30],b[30],c[30]; assert(ChildRoomValue != 0 || ChildRoomType != 0); int64toa(ParentRoom,a); int64toa(ChildRoomValue,b); int64toa(ChildRoomType,c); SQL.format("select \"%s\" from \"%s\" where \"%s\" = \"%s\" and \"%s\" = %s;", RB_SPACE_ID, a, RB_SPACE_VALUE, b, RB_SPACE_TYPE, c ); Result = BrainDB.execQuery(SQL); if(Result.eof())return 0; ChildID = Result.getInt64Field(0); return ChildID; }
void CreateTable(int64 TableID) { char TableName[30]; int64toa(TableID,TableName); CppSQLite3Buffer SQL; // 空间ID 空间名字 空间类型 空间指纹 空间属性 空间拥有者信息 SQL.format("CREATE TABLE \"%s\" ( a INTEGER NOT NULL ,b TEXT NOT NULL, c INTEGER NOT NULL, d TEXT, e TEXT, f TEXT );",TableName); GetWorldDB().execDML(SQL); }
CppSQLite3Query CBrainMemory::Query(const char* Select,const char* From, const char* Where, const char* Value ) { CppSQLite3Buffer SQL; if(!strcmp(Select,"*"))SQL.format("select * from \"%s\" where \"%s\" = \"%s\";",From,Where,Value); else SQL.format("select \"%s\" from \"%s\" where \"%s\" = \"%s\";",Select,From,Where,Value); return BrainDB.execQuery(SQL); }
bool CSpace::Load(int64 ParentID,int64 ChildID){ m_ID = ParentID; char ParentName[30], ChildName[30]; int64toa(ParentID,ParentName); int64toa(ChildID,ChildName); CppSQLite3Buffer SQL; SQL.format("select * from \"%s\" where %s = \"%s\" ", ParentName, ITEM_ID, ChildName ); CppSQLite3Query Result = GetWorldDB().execQuery(SQL); if(Result.eof()){ return false; } assert(Size()>5); assert(GetDataType(0) == TYPE_INT); int64& OldID = *(int64*)GetData(0); OldID = ChildID; AnsiString AnsiName = Result.getStringField(1,""); tstring Name = UTF8toWS(AnsiName); SetName(Name); SPACETYPE Type = (SPACETYPE)Result.getIntField(2); SetSpaceType(Type); AnsiString Fingerprint = Result.getStringField(3); tstring Fingerprint1 = UTF8toWS(Fingerprint); SetFingerprint(Fingerprint1); AnsiString AnsiProperty = Result.getStringField(4,""); ePipeline Property; uint32 pos =0; bool ret = Property.FromString(AnsiProperty,pos); if(!ret){ return false; } SetProerty(Property); AnsiString AnsiOwner = Result.getStringField(5,""); ePipeline OwnerInfo; pos=0; ret = OwnerInfo.FromString(AnsiOwner,pos); if(!ret){ return false; } SetOwnerInfo(OwnerInfo); return true; }
void CBrainMemory::InsertRow(int64 TableName,int64 one, int64 two, int64 three) { CppSQLite3Buffer SQL; char a[30],b[30],c[30],d[30]; int64toa(TableName,a); int64toa(one,b); int64toa(two,c); int64toa(three,d); SQL.format("insert into \"%s\" values (\"%s\", \"%s\", \"%s\")",a,b,c,d); BrainDB.execDML(SQL); }
////////////////////////////////////////////////////////////////////////// // [3/23/2011 DHKim] // 성공적으로 그룹테이블에 그룹이 추가되면 GroupKey를 리턴한다. 실패시 -1을 리턴 ////////////////////////////////////////////////////////////////////////// int CDbMeter::GroupAdd(const char* dbfilename, char* szGroupName) { int nGroupKey = -1; try { CppSQLite3DB db; db.open(dbfilename); CppSQLite3Buffer bufSQL; CppSQLite3Table t; bufSQL.format("INSERT INTO groups(GroupName) VALUES(%Q);", szGroupName); db.execDML(bufSQL); XDEBUG("Success: INSERT Command!!\r\n"); bufSQL.clear(); bufSQL.format("SELECT GroupKey FROM groups WHERE GroupName=%Q;", szGroupName); //CppSQLite3Query q = db.execQuery(bufSQL); t = db.getTable(bufSQL); if( t.numRows() == 0 ) { XDEBUG("Failure: SELECT Command!!\r\n"); return nGroupKey; } else { // 동일 이름시 마지막에 추가된 그룹 키를 리턴한다. int nFinalRow = t.numRows() - 1; t.setRow(nFinalRow); if( !t.fieldIsNull(nFinalRow) ) nGroupKey = atoi(t.fieldValue(nFinalRow)); else { XDEBUG("Error: GroupKey is NULL!!\r\n"); return nGroupKey; } XDEBUG("Success: SELECT Command!!\r\n"); } //nGroupKey = q.getIntField("GroupKey", -1); db.close(); } catch( CppSQLite3Exception& e ) { XDEBUG("%s\r\n",e.errorMessage()); return -1; } return nGroupKey; }
bool HasChild(int64 ParentID) { if(!HasTable(ParentID))return false; char TableName[30]; int64toa(ParentID,TableName); CppSQLite3Buffer SQL; SQL.format("select %s from \"%s\" ",ITEM_ID,TableName); CppSQLite3Query Result; Result = GetWorldDB().execQuery(SQL); if(Result.eof())return false; return true; };
SpaceAddress FindSpace(ePipeline& Path){ SpaceAddress Addr; if (Path.Size()==0) { Addr.ParentID = ROOT_SPACE; Addr.ChildID = LOCAL_SPACEID; return Addr; } CppSQLite3Buffer SQL; int64 ParentID = 0; int64 ChildID = ROOT_SPACE; char ParentName[30]; while (Path.Size()) { tstring Name = Path.PopString(); AnsiString AnsiName = WStoUTF8(Name); ParentID = ChildID; ChildID = 0; int64toa(ParentID,ParentName); SQL.format("select %s from \"%s\" where %s=\"%s\"", ITEM_ID, ParentName, ITEM_NAME, AnsiName.c_str() ); CppSQLite3Query Result = GetWorldDB().execQuery(SQL); if(!Result.eof()){ ChildID = Result.getInt64Field(0); Result.nextRow(); }else{ return Addr; } } assert(Path.Size()==0); Addr.ParentID = ParentID; Addr.ChildID = ChildID; return Addr; }
bool HasChild(int64 ParentID,int64 ChildID) { if(!HasTable(ParentID))return false; char Parent[30],Child[30]; int64toa(ParentID,Parent); int64toa(ChildID,Child); CppSQLite3Buffer SQL; SQL.format("select * from \"%s\" where %s = \"%s\" ",Parent,ITEM_ID,Child); CppSQLite3Query Result; Result = GetWorldDB().execQuery(SQL); if(Result.eof())return false; return true; }
int32 GetAllChildList(int64 ParentID, ePipeline& ChildList,int64 NotIncludeChildID /*=0*/){ assert(ParentID >0); ChildList.Clear(); char TableName[30]; int64toa(ParentID,TableName); if(!GetWorldDB().tableExists(TableName)){ return 0; } //ChildList.SetID(ParentID); CppSQLite3Buffer SQL; SQL.format("select %s,%s,%s,%s from \"%s\"", ITEM_ID, ITEM_NAME, ITEM_TYPE, ITEM_FINGERPRINT, TableName ); CppSQLite3Query Result = GetWorldDB().execQuery(SQL); while(!Result.eof()){ int64 ChildID = Result.getInt64Field(0); if (ChildID !=NotIncludeChildID) { AnsiString s = Result.getStringField(1,""); tstring Name = UTF8toWS(s); Name = GetFileNoPathName(Name); Name = GetFileName(Name); int32 Type = Result.getIntField(2); AnsiString FingerPrint = Result.getStringField(3,""); //ChildList.PushInt64(ChildID); ChildList.PushString(Name); ChildList.PushInt(Type); ChildList.PushString(FingerPrint); } Result.nextRow(); } return ChildList.Size()/3; }
void CVoxSQLite::GetProfile( const char* username, Profile& rProfile ) { CppSQLite3Buffer buf; buf.format( "SELECT * from Profile WHERE username = %Q;", username ); try { CppSQLite3Statement stmt = m_db.compileStatement( (const char*)buf ); int nProfileId = 0; CppSQLite3Query q = stmt.execQuery(); //Process record set. while (!q.eof()) { nProfileId = q.getIntField(0); rProfile.setFirstName ( q.getStringField(2) ); rProfile.setLastName ( q.getStringField(3) ); rProfile.setAlias ( q.getStringField(4) ); rProfile.setSmsSignature( q.getStringField(5) ); rProfile.setCompany ( q.getStringField(6) ); rProfile.setSex ( (EnumSex::Sex)q.getIntField(7) ); rProfile.setNotes ( q.getStringField(10) ); // rProfile.setBirthday( q.getStringField(8) ); // photo (filename) //TODO rProfile.setPhoto( q.getBlobField(9) ); //Address, email, phone numbers, and URLs will be in separate tables to allow for easy GetStreetAddresses( nProfileId, rProfile.getStreetAddresses() ); GetEmailAddresses ( nProfileId, rProfile.getEmailAddresses() ); GetTelephones ( nProfileId, rProfile.getTelephones() ); GetUrls ( nProfileId, rProfile.getUrls() ); q.nextRow(); } stmt.reset(); } catch (CppSQLite3Exception& e) { e.errorCode(); } }
void DeleteChild(int64 ParentID,int64 ChildID) { DeleteAllChild(ChildID); char FatherName[30], ChildName[30]; int64toa(ParentID,FatherName); int64toa(ChildID,ChildName); CppSQLite3Buffer SQL; //在父空间里删除本空间条目 SQL.format("delete from \"%s\" where %s = \"%s\" ", FatherName, ITEM_ID, ChildName); GetWorldDB().execDML(SQL); }
bool CVoxSQLite::ContactExists( const char* username ) { int nCount = 0; try { CppSQLite3Buffer buf; buf.format( "SELECT count(*) from Contact WHERE username = %Q", username ); nCount = m_db.execScalar( (const char*)buf ); } catch (CppSQLite3Exception& e) { e.errorCode(); } return (nCount > 0); }
int CDbMeter::GroupDelete(const char* dbfilename, int nGroupKey) { try { CppSQLite3DB db; db.open(dbfilename); // 그룹테이블에 그룹이름이 있느지 확인 CppSQLite3Buffer bufSQL; //CppSQLite3Query q; CppSQLite3Table t; bufSQL.format("SELECT GroupKey FROM groups WHERE GroupKey=%d;", nGroupKey); t = db.getTable(bufSQL); if( t.numRows() == 0 ) { XDEBUG("ERROR: %d GroupKey doesn't exist in Groups Table!!\r\n", nGroupKey); return IF4ERR_GROUP_NAME_NOT_EXIST; } else { bufSQL.clear(); bufSQL.format("DELETE FROM groups WHERE GroupKey=%d;", nGroupKey); db.execDML(bufSQL); XDEBUG("%d GroupKey deleted in Groups Table!!\r\n", nGroupKey); //bufSQL.format("SELECT Groups.GroupName FROM groupmember LEFT OUTER JOIN groups ON groupmember.GroupKey=groups.GroupKey LEFT OUTER JOIN member ON groupmember.EUI64ID=member.EUI64ID WHERE groups.GroupName = %s;", szGroupName); } bufSQL.clear(); bufSQL.format("SELECT GroupKey FROM groupmember WHERE GroupKey=%d;", nGroupKey); t = db.getTable(bufSQL); if( t.numRows() == 0 ) { XDEBUG("ERROR: %d GroupKey doesn't exist!! in Groupmember Table!!\r\n", nGroupKey); return IF4ERR_GROUP_NAME_NOT_EXIST; } else { bufSQL.clear(); bufSQL.format("DELETE FROM groupmember WHERE GroupKey=%d;", nGroupKey); db.execQuery(bufSQL); XDEBUG("%d GroupKey deleted in Groupmember Table!!\r\n", nGroupKey); } db.close(); } catch( CppSQLite3Exception& e ) { XDEBUG("%s\r\n",e.errorMessage()); return e.errorCode(); } return SQLITE_OK; }