×
Namespaces

Variants
Actions

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

From Nokia Developer 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.
17 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.

×