My Project
D:/source/c++/Programme/sally/sally/sallyAPI/DatabaseConnection.h
Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 #pragma once
00029 #include "Define.h"
00030 #include <sqlite3.h>
00031 #include <map>
00032 #include <string>
00033 #include "DatabaseMetaData.h"
00034 #include "Statement.h"
00035 #include "DatabaseObject.h"
00036 #include "StringHelper.h"
00037 
00038 namespace SallyAPI
00039 {
00040         namespace Database
00041         {
00050 
00051                 class DLL_API_SALLY CDatabaseConnection
00052                 {
00053                 private:
00054                         static std::map<std::string, SallyAPI::Database::CDatabaseConnection*>  m_pOpenFiles;
00055                         static CRITICAL_SECTION                                                                                                 m_critSectOpenCloseDatabase;
00056 
00057                         int                                     m_iConnectedThreads;
00058                         sqlite3*                        m_pSqlite;
00059                         CStatement*                     m_pStatement;
00060                         CDatabaseMetaData*      m_pDatabaseMetaData;
00061                         CRITICAL_SECTION        m_critSectLockDatabase;
00062                         
00063 
00064                         CDatabaseConnection();
00065                         ~CDatabaseConnection();
00066 
00067                         void                            ConnectThread();
00068                         void                            DisconnectThread();
00069 
00070                         void                            OpenDB(const std::string& db_name);
00071                         void                            CloseDB();
00072                 public:
00073                         int                                     GetConnectedThreads();
00074 
00075                         static SallyAPI::Database::CDatabaseConnection* Open(const std::string& file);
00076                         static void                     Close(const std::string& file);
00077 
00078                         static void                     Init();
00079                         static void                     Destroy();
00080                         
00081                         CStatement*                     CreateStatement();
00082                         CDatabaseMetaData*      GetDatabaseMetaData();
00083                         void                            RefreshMetaData();                      
00084                         void                            LockDatabase();
00085                         void                            ReleaseDatabase();
00086                 };
00087         }
00088 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines