Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Управление локальными базами данных ориентиров

From Wiki
Jump to: navigation, search
Article Metadata

Статья
Перевод:
Den123
Последнее редактирование: hamishwillee (09 Dec 2011)

Все ориентиры, а также категории ориентиров, хранятся в специальных базах данных которые могут быть локальными или удаленными. В качестве идентификатора базы данных выступает URI, который содержит спецификатор протокола доступа и расположение базы данных: protocol://location.

Для локальных баз данных используется:

  • протокол "file".
  • расположение содержит имя диска и имя файла ( с расширением *.ldb)

Пример URI локальной базы данных: "file://C:my_data.ldb"

Для управления локальными базами данных предназначены классы, входящие в Landmarks Database Management API. Основным классом является CPosLmDatabaseManager. (заголовочный файл: epos_cposlmdatabasemanager.h, библиотека: eposlmdbmanlib.lib)

Несколько простых примеров использования:

Следующий фрагмент кода демонстрирует как переименовать базу данных по умолчанию:

_LIT( KNewName, "New Database Name" );
const TInt KMaxDbNameLen = 64;
TBuf<KMaxDbNameLen> newName( KNewName );
 
// DB Manager;
CPosLmDatabaseManager* dbManager = CPosLmDatabaseManager :: NewL();
CleanupStack :: PushL( dbManager );
 
// Получение URI базы данных по умолчанию:
HBufC* defaultUri = dbManager->DefaultDatabaseUriLC();
if( defaultUri )
{
// Получение информации по полученному URI
HPosLmDatabaseInfo* dbInfo = HPosLmDatabaseInfo :: NewLC( *defaultUri );
dbManager->GetDatabaseInfoL( *dbInfo );
 
// Чтение настроек
TPosLmDatabaseSettings& settings = dbInfo->Settings();
 
// Установка нового имени и сохранение настроек
settings.SetDatabaseName( newName );
dbManager->ModifyDatabaseSettingsL( *defaultUri, settings );
 
CleanupStack :: PopAndDestroy( 2 ); // dbInfo defaultUri
}
CleanupStack :: PopAndDestroy( 1 ); // dbManager


Следующий фрагмент кода показывает, как скопировать все имеющиеся базы данных с одного диска на другой:

// db manager;
CPosLmDatabaseManager* dbManager = CPosLmDatabaseManager :: NewL();
CleanupStack :: PushL( dbManager );
 
// протокол для локальных баз
_LIT( KFileProto, "file" );
 
// массив для хранения URI локальных баз
CDesCArray* dbUriList = dbManager->ListDatabasesLC( KFileProto );
 
const TInt KMaxUriLen = 128;
TBuf<KMaxUriLen> uri, newUri;
 
TChar driveFrom = 'C',
driveTo = 'E';
 
TBuf<1> newDrive;
newDrive.Append( driveTo );
 
for(TInt i = 0; i < dbUriList->Count(); i++ )
{
uri = (*dbUriList)[i];
if( uri[7] == driveFrom )
{
// формирование нового URI: file://C... -> file://E...
newUri = uri;
newUri.Replace( 7, 1, newDrive );
// если такая база уже существует
if( dbManager->DatabaseExistsL( newUri ) )
{
// удалить существующую базу
dbManager->DeleteDatabaseL( newUri );
}
// копирование
dbManager->CopyDatabaseL( uri, newUri );
}
}
 
CleanupStack :: PopAndDestroy( 2 ); // iDbList dbManager

Внутренние ссылки

This page was last modified on 9 December 2011, at 02:01.
32 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×