mpserviceplugins/mpxsqlitedbcommon/src/mpxdbmanager.cpp
changeset 38 b93f525c9244
parent 37 eb79a7c355bf
child 45 612c4815aebe
child 48 af3740e3753f
equal deleted inserted replaced
37:eb79a7c355bf 38:b93f525c9244
   865 //
   865 //
   866 EXPORT_C void CMPXDbManager::CloseAllDatabases()
   866 EXPORT_C void CMPXDbManager::CloseAllDatabases()
   867     {
   867     {
   868     MPX_FUNC("CMPXDbManager::CloseAllDatabases");
   868     MPX_FUNC("CMPXDbManager::CloseAllDatabases");
   869 
   869 
   870     if (iInitialized)
   870     // Close all prepared statements if a db is closed
   871         {
   871     //
   872         // Close all prepared statements if a db is closed
   872     ResetPreparedQueries();
   873         //
   873 
   874         ResetPreparedQueries();
   874     TInt count(iDatabaseHandles.Count());
   875 
   875     for (TInt i = 0; i < count; ++i)
   876         TInt count(iDatabaseHandles.Count());
   876         {
   877         for (TInt i = 0; i < count; ++i)
   877         delete iDatabaseHandles[i].iAliasname;
   878             {
   878         iDatabaseHandles[i].iAliasname = 0;
   879             delete iDatabaseHandles[i].iAliasname;
       
   880             iDatabaseHandles[i].iAliasname = 0;
       
   881 #ifdef __RAMDISK_PERF_ENABLE 
   879 #ifdef __RAMDISK_PERF_ENABLE 
   882             RemoveDummyFile(i);            	
   880         RemoveDummyFile(i);            	
   883             delete iDatabaseHandles[i].iOrigFullFilePath;
   881         delete iDatabaseHandles[i].iOrigFullFilePath;
   884 			iDatabaseHandles[i].iOrigFullFilePath = 0;
   882         iDatabaseHandles[i].iOrigFullFilePath = 0;
   885             delete iDatabaseHandles[i].iTargetFullFilePath;
   883         delete iDatabaseHandles[i].iTargetFullFilePath;
   886 			iDatabaseHandles[i].iTargetFullFilePath = 0;
   884         iDatabaseHandles[i].iTargetFullFilePath = 0;
   887 #endif //__RAMDISK_PERF_ENABLE 
   885 #endif //__RAMDISK_PERF_ENABLE 
   888             }
   886         }
   889 
   887 
   890         iDatabaseHandles.Reset();
   888     iDatabaseHandles.Reset();
   891         iDatabase.Close();
   889     iDatabase.Close();
   892         iInitialized = EFalse;
   890     iInitialized = EFalse;
   893         }
       
   894     }
   891     }
   895 
   892 
   896 // ----------------------------------------------------------------------------
   893 // ----------------------------------------------------------------------------
   897 // Open all databases.
   894 // Open all databases.
   898 // ----------------------------------------------------------------------------
   895 // ----------------------------------------------------------------------------
  1730 
  1727 
  1731 	CreateTablesL(aDatabase, EFalse);
  1728 	CreateTablesL(aDatabase, EFalse);
  1732     }
  1729     }
  1733 
  1730 
  1734 // ----------------------------------------------------------------------------
  1731 // ----------------------------------------------------------------------------
       
  1732 // CleanupTransaction: close transaction when creating DB
       
  1733 // ----------------------------------------------------------------------------
       
  1734 //
       
  1735 static void CleanupTransaction(TAny * aDatabase)
       
  1736     {
       
  1737     TInt err = ((RSqlDatabase*)aDatabase)->Exec(KRollbackTransaction);
       
  1738     MPX_DEBUG2("CMPXDbManager CleanupTransaction rollback, error %d", err);
       
  1739     }
       
  1740     
       
  1741 // ----------------------------------------------------------------------------
  1735 // CMPXDbManager::CreateTablesL
  1742 // CMPXDbManager::CreateTablesL
  1736 // ----------------------------------------------------------------------------
  1743 // ----------------------------------------------------------------------------
  1737 //
  1744 //
  1738 void CMPXDbManager::CreateTablesL(
  1745 void CMPXDbManager::CreateTablesL(
  1739 	RSqlDatabase& aDatabase,
  1746 	RSqlDatabase& aDatabase,
  1740 	TBool aCorrupt)
  1747 	TBool aCorrupt)
  1741 	{
  1748 	{
       
  1749 	MPX_FUNC("CMPXDbManager::CreateTablesL");
       
  1750     TInt err = aDatabase.Exec(KBeginTransaction);
       
  1751     if (err < 0)
       
  1752        {
       
  1753        MPX_DEBUG2("SQL BEGIN TRANSACTION error %d", err);
       
  1754        User::Leave (err);
       
  1755        }
       
  1756     CleanupStack::PushL(TCleanupItem(&CleanupTransaction, &aDatabase));
  1742     TInt count(iTables.Count());
  1757     TInt count(iTables.Count());
  1743     for (TInt i = 0; i < count; ++i)
  1758     for (TInt i = 0; i < count; ++i)
  1744         {
  1759         {
  1745         iTables[i]->CreateTableL(aDatabase, aCorrupt);
  1760         iTables[i]->CreateTableL(aDatabase, aCorrupt);
  1746         }
  1761         }
       
  1762     err = aDatabase.Exec(KCommitTransaction);
       
  1763     if (err < 0)
       
  1764         {
       
  1765         MPX_DEBUG2("SQL COMMIT TRANSACTION error %d", err);
       
  1766         User::Leave (err);
       
  1767         }
       
  1768     CleanupStack::Pop();
  1747 	}
  1769 	}
  1748 
  1770 
  1749 // ----------------------------------------------------------------------------
  1771 // ----------------------------------------------------------------------------
  1750 // Opens root database on C-drive
  1772 // Opens root database on C-drive
  1751 // ----------------------------------------------------------------------------
  1773 // ----------------------------------------------------------------------------