}
IList*
+_NetAccountDatabase::GetProfileNamesN(void)
+{
+ static const wchar_t _NET_ACCOUNT_DATABASE_GET_PROFILE_NAMES_STATEMENT[] =
+ L"SELECT profileName FROM NetAccountTable";
+
+ result r = E_SUCCESS;
+ Database accountDb;
+ unique_ptr<DbStatement> pStmt;
+ unique_ptr<DbEnumerator> pEnum;
+ unique_ptr<ArrayList, _CollectionDeleter> pList;
+
+ r = accountDb.Construct(_NetAccountDatabase::GetDbPath(), false);
+ SysTryReturn(NID_NET, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ pStmt.reset(accountDb.CreateStatementN(String(_NET_ACCOUNT_DATABASE_GET_PROFILE_NAMES_STATEMENT)));
+ r = GetLastResult();
+ SysTryReturn(NID_NET, pStmt != null, null, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ pList.reset(new (std::nothrow) ArrayList());
+ r = GetLastResult();
+ SysTryReturn(NID_NET, pList != null, null, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ r = pList->Construct();
+ SysTryReturn(NID_NET, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ pEnum.reset(accountDb.ExecuteStatementN(*pStmt));
+ r = GetLastResult();
+ SysTryReturn(NID_NET, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ if (pEnum != null)
+ {
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ unique_ptr<String> pProfileName(new (std::nothrow) String());
+ SysTryReturn(NID_NET, pProfileName != null, null, E_OUT_OF_MEMORY,
+ "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+
+ r = pEnum->GetStringAt(0, *pProfileName);
+ SysTryReturn(NID_NET, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ r = pList->Add(*pProfileName);
+ SysTryReturn(NID_NET, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
+
+ pProfileName.release();
+ }
+ }
+
+ ClearLastResult(); // To suppress E_OUT_OF_RANGE
+
+ return pList.release();
+}
+
+IList*
_NetAccountDatabase::GetAppProfileNamesN(void)
{
static const wchar_t _NET_ACCOUNT_DATABASE_GET_PROFILE_NAMES_STATEMENT[] =