Kodi Documentation 18.0
Kodi is an open source media player and entertainment hub.
CDatabase Class Referenceabstract

#include <Database.h>

Inheritance diagram for CDatabase:
CAddonDatabase CMusicDatabase CTextureDatabase CVideoDatabase CViewDatabase PVR::CPVRDatabase PVR::CPVREpgDatabase

Classes

struct  DatasetFieldInfo
 
class  DatasetLayout
 
class  ExistsSubQuery
 
class  Filter
 

Public Types

typedef struct CDatabase::DatasetFieldInfo DatasetFieldInfo
 

Public Member Functions

 CDatabase ()
 
virtual ~CDatabase (void)
 
bool IsOpen ()
 
virtual void Close ()
 
bool Compress (bool bForce=true)
 
void Interrupt ()
 
bool Open (const DatabaseSettings &db)
 
void BeginTransaction ()
 
virtual bool CommitTransaction ()
 
void RollbackTransaction ()
 
bool InTransaction ()
 
void CopyDB (const std::string &latestDb)
 
void DropAnalytics ()
 
std::string PrepareSQL (std::string strStmt,...) const
 
std::string GetSingleValue (const std::string &strTable, const std::string &strColumn, const std::string &strWhereClause=std::string(), const std::string &strOrderBy=std::string())
 Get a single value from a table. More...
 
std::string GetSingleValue (const std::string &query)
 
std::string GetSingleValue (const std::string &query, std::unique_ptr< dbiplus::Dataset > &ds)
 Get a single value from a query on a dataset. More...
 
bool DeleteValues (const std::string &strTable, const Filter &filter=Filter())
 Delete values from a table. More...
 
bool ExecuteQuery (const std::string &strQuery)
 Execute a query that does not return any result. Note that if BeginMultipleExecute() has been called, the query will be queued until CommitMultipleExecute() is called. More...
 
bool ResultQuery (const std::string &strQuery)
 Execute a query that returns a result. More...
 
bool BeginMultipleExecute ()
 Start a multiple execution queue. Any ExecuteQuery() function following this call will be queued rather than executed until CommitMultipleExecute() is performed. NOTE: Queries that rely on any queued execute query will not function as expected during this period! More...
 
bool CommitMultipleExecute ()
 Commit the multiple execution queue to the database. Queries are performed within a transaction, and the transaction is rolled back should any one query fail. More...
 
bool QueueInsertQuery (const std::string &strQuery)
 Put an INSERT or REPLACE query in the queue. More...
 
bool CommitInsertQueries ()
 Commit all queries in the queue. More...
 
virtual bool GetFilter (CDbUrl &dbUrl, Filter &filter, SortDescription &sorting)
 
virtual bool BuildSQL (const std::string &strBaseDir, const std::string &strQuery, Filter &filter, std::string &strSQL, CDbUrl &dbUrl)
 
virtual bool BuildSQL (const std::string &strBaseDir, const std::string &strQuery, Filter &filter, std::string &strSQL, CDbUrl &dbUrl, SortDescription &sorting)
 
bool Connect (const std::string &dbName, const DatabaseSettings &db, bool create)
 

Protected Member Functions

void Split (const std::string &strFileNameAndPath, std::string &strPath, std::string &strFileName)
 
virtual bool Open ()
 
bool CreateDatabase ()
 Create database tables and analytics as needed. Calls CreateTables() and CreateAnalytics() on child classes. More...
 
virtual void CreateTables ()=0
 
virtual void CreateAnalytics ()=0
 
virtual void UpdateTables (int version)
 
virtual int GetMinSchemaVersion () const
 
virtual int GetSchemaVersion () const =0
 
virtual const char * GetBaseDBName () const =0
 
int GetDBVersion ()
 
bool BuildSQL (const std::string &strQuery, const Filter &filter, std::string &strSQL)
 

Protected Attributes

bool m_sqlite
 whether we use sqlite (defaults to true) More...
 
std::unique_ptr< dbiplus::Databasem_pDB
 
std::unique_ptr< dbiplus::Datasetm_pDS
 
std::unique_ptr< dbiplus::Datasetm_pDS2
 
const CProfileManagerm_profileManager
 

Friends

class CDatabaseManager
 

Member Typedef Documentation

◆ DatasetFieldInfo

Constructor & Destructor Documentation

◆ CDatabase()

CDatabase::CDatabase ( )

◆ ~CDatabase()

CDatabase::~CDatabase ( void  )
virtual

Member Function Documentation

◆ BeginMultipleExecute()

bool CDatabase::BeginMultipleExecute ( )

Start a multiple execution queue. Any ExecuteQuery() function following this call will be queued rather than executed until CommitMultipleExecute() is performed. NOTE: Queries that rely on any queued execute query will not function as expected during this period!

Returns
true if we could start a multiple execution queue, false otherwise.
See also
CommitMultipleExecute, ExecuteQuery

◆ BeginTransaction()

void CDatabase::BeginTransaction ( )

◆ BuildSQL() [1/3]

bool CDatabase::BuildSQL ( const std::string &  strBaseDir,
const std::string &  strQuery,
Filter filter,
std::string &  strSQL,
CDbUrl dbUrl 
)
virtual

◆ BuildSQL() [2/3]

bool CDatabase::BuildSQL ( const std::string &  strBaseDir,
const std::string &  strQuery,
Filter filter,
std::string &  strSQL,
CDbUrl dbUrl,
SortDescription sorting 
)
virtual

◆ BuildSQL() [3/3]

bool CDatabase::BuildSQL ( const std::string &  strQuery,
const Filter filter,
std::string &  strSQL 
)
protected

◆ Close()

void CDatabase::Close ( void  )
virtual

Reimplemented in PVR::CPVREpgDatabase, and PVR::CPVRDatabase.

◆ CommitInsertQueries()

bool CDatabase::CommitInsertQueries ( )

Commit all queries in the queue.

Returns
True if all queries were executed successfully, false otherwise.

◆ CommitMultipleExecute()

bool CDatabase::CommitMultipleExecute ( )

Commit the multiple execution queue to the database. Queries are performed within a transaction, and the transaction is rolled back should any one query fail.

Returns
True if the queries were executed successfully, false otherwise.
See also
BeginMultipleExecute, ExecuteQuery

◆ CommitTransaction()

bool CDatabase::CommitTransaction ( )
virtual

Reimplemented in CMusicDatabase, and CVideoDatabase.

◆ Compress()

bool CDatabase::Compress ( bool  bForce = true)

◆ Connect()

bool CDatabase::Connect ( const std::string &  dbName,
const DatabaseSettings db,
bool  create 
)

◆ CopyDB()

void CDatabase::CopyDB ( const std::string &  latestDb)

◆ CreateAnalytics()

virtual void CDatabase::CreateAnalytics ( )
protectedpure virtual

◆ CreateDatabase()

bool CDatabase::CreateDatabase ( )
protected

Create database tables and analytics as needed. Calls CreateTables() and CreateAnalytics() on child classes.

◆ CreateTables()

virtual void CDatabase::CreateTables ( )
protectedpure virtual

◆ DeleteValues()

bool CDatabase::DeleteValues ( const std::string &  strTable,
const Filter filter = Filter() 
)

Delete values from a table.

Parameters
strTableThe table to delete the values from.
filterThe Filter to apply to this query.
Returns
True if the query was executed successfully, false otherwise.

◆ DropAnalytics()

void CDatabase::DropAnalytics ( )

◆ ExecuteQuery()

bool CDatabase::ExecuteQuery ( const std::string &  strQuery)

Execute a query that does not return any result. Note that if BeginMultipleExecute() has been called, the query will be queued until CommitMultipleExecute() is called.

Parameters
strQueryThe query to execute.
Returns
True if the query was executed successfully, false otherwise.
See also
BeginMultipleExecute, CommitMultipleExecute

◆ GetBaseDBName()

virtual const char * CDatabase::GetBaseDBName ( ) const
protectedpure virtual

◆ GetDBVersion()

int CDatabase::GetDBVersion ( )
protected

◆ GetFilter()

virtual bool CDatabase::GetFilter ( CDbUrl dbUrl,
Filter filter,
SortDescription sorting 
)
inlinevirtual

Reimplemented in CMusicDatabase, and CVideoDatabase.

◆ GetMinSchemaVersion()

virtual int CDatabase::GetMinSchemaVersion ( ) const
inlineprotectedvirtual

Reimplemented in CAddonDatabase, and CMusicDatabase.

◆ GetSchemaVersion()

virtual int CDatabase::GetSchemaVersion ( ) const
protectedpure virtual

◆ GetSingleValue() [1/3]

std::string CDatabase::GetSingleValue ( const std::string &  query)

◆ GetSingleValue() [2/3]

std::string CDatabase::GetSingleValue ( const std::string &  query,
std::unique_ptr< dbiplus::Dataset > &  ds 
)

Get a single value from a query on a dataset.

Parameters
querythe query in question.
dsthe dataset to use for the query.
Returns
the value from the query, empty on failure.

◆ GetSingleValue() [3/3]

std::string CDatabase::GetSingleValue ( const std::string &  strTable,
const std::string &  strColumn,
const std::string &  strWhereClause = std::string(),
const std::string &  strOrderBy = std::string() 
)

Get a single value from a table.

Remarks
The values of the strWhereClause and strOrderBy parameters have to be FormatSQL'ed when used.
Parameters
strTableThe table to get the value from.
strColumnThe column to get.
strWhereClauseIf set, use this WHERE clause.
strOrderByIf set, use this ORDER BY clause.
Returns
The requested value or an empty string if it wasn't found.

◆ Interrupt()

void CDatabase::Interrupt ( )

◆ InTransaction()

bool CDatabase::InTransaction ( )

◆ IsOpen()

bool CDatabase::IsOpen ( )

◆ Open() [1/2]

bool CDatabase::Open ( )
protectedvirtual

◆ Open() [2/2]

bool CDatabase::Open ( const DatabaseSettings db)

◆ PrepareSQL()

std::string CDatabase::PrepareSQL ( std::string  strStmt,
  ... 
) const

◆ QueueInsertQuery()

bool CDatabase::QueueInsertQuery ( const std::string &  strQuery)

Put an INSERT or REPLACE query in the queue.

Parameters
strQueryThe query to queue.
Returns
True if the query was added successfully, false otherwise.

◆ ResultQuery()

bool CDatabase::ResultQuery ( const std::string &  strQuery)

Execute a query that returns a result.

Remarks
Call m_pDS->close(); to clean up the dataset when done.
Parameters
strQueryThe query to execute.
Returns
True if the query was executed successfully, false otherwise.

◆ RollbackTransaction()

void CDatabase::RollbackTransaction ( )

◆ Split()

void CDatabase::Split ( const std::string &  strFileNameAndPath,
std::string &  strPath,
std::string &  strFileName 
)
protected

◆ UpdateTables()

virtual void CDatabase::UpdateTables ( int  version)
inlineprotectedvirtual

Friends And Related Function Documentation

◆ CDatabaseManager

friend class CDatabaseManager
friend

Member Data Documentation

◆ m_pDB

std::unique_ptr<dbiplus::Database> CDatabase::m_pDB
protected

◆ m_pDS

std::unique_ptr<dbiplus::Dataset> CDatabase::m_pDS
protected

◆ m_pDS2

std::unique_ptr<dbiplus::Dataset> CDatabase::m_pDS2
protected

◆ m_profileManager

const CProfileManager& CDatabase::m_profileManager
protected

◆ m_sqlite

bool CDatabase::m_sqlite
protected

whether we use sqlite (defaults to true)


The documentation for this class was generated from the following files: