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 // ---------------------------------------------------------------------------- |