OpenMS  2.5.0
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
SqliteConnector Class Reference

File adapter for Sqlite files. More...

#include <OpenMS/FORMAT/SqliteConnector.h>

Public Member Functions

 SqliteConnector ()
 Default constructor. More...
 
 SqliteConnector (const String &filename)
 
 ~SqliteConnector ()
 Destructor. More...
 
sqlite3 * getDB ()
 Returns the raw pointer to the database. More...
 
bool tableExists (const String &tablename)
 Checks whether the given table exists. More...
 
bool columnExists (const String &tablename, const String &colname)
 Checkes whether the given table contains a certain column. More...
 
void executeStatement (const std::stringstream &statement)
 Executes a given SQL statement (insert statement) More...
 
void executeStatement (const String &statement)
 Executes a given SQL statement (insert statement) More...
 
void executeBindStatement (const String &prepare_statement, const std::vector< String > &data)
 Executes raw data SQL statements (insert statements) More...
 
void prepareStatement (sqlite3_stmt **stmt, const String &prepare_statement)
 Prepares a SQL statement. More...
 

Static Public Member Functions

static bool tableExists (sqlite3 *db, const String &tablename)
 Checks whether the given table exists. More...
 
static bool columnExists (sqlite3 *db, const String &tablename, const String &colname)
 Checks whether the given table contains a certain column. More...
 
static void executeStatement (sqlite3 *db, const std::stringstream &statement)
 Executes a given SQL statement (insert statement) More...
 
static void executeStatement (sqlite3 *db, const String &statement)
 Executes a given SQL statement (insert statement) More...
 
static void prepareStatement (sqlite3 *db, sqlite3_stmt **stmt, const String &prepare_statement)
 Converts an SQL statement into a prepared statement. More...
 
static void executeBindStatement (sqlite3 *db, const String &prepare_statement, const std::vector< String > &data)
 Executes raw data SQL statements (insert statements) More...
 

Protected Member Functions

void openDatabase (const String &filename)
 Opens a new SQLite database. More...
 

Protected Attributes

sqlite3 * db_
 

Detailed Description

File adapter for Sqlite files.

This class contains certain helper functions to deal with Sqlite files.

Constructor & Destructor Documentation

◆ SqliteConnector() [1/2]

Default constructor.

◆ SqliteConnector() [2/2]

SqliteConnector ( const String filename)
inlineexplicit

◆ ~SqliteConnector()

Destructor.

Member Function Documentation

◆ columnExists() [1/2]

bool columnExists ( const String tablename,
const String colname 
)
inline

Checkes whether the given table contains a certain column.

tablename The name of the table (needs to exist) colname The name of the column to be checked

Returns
Whether the column exists or not

◆ columnExists() [2/2]

static bool columnExists ( sqlite3 *  db,
const String tablename,
const String colname 
)
static

Checks whether the given table contains a certain column.

db The sqlite database (needs to be open) tablename The name of the table (needs to exist) colname The name of the column to be checked

Returns
Whether the column exists or not

◆ executeBindStatement() [1/2]

void executeBindStatement ( const String prepare_statement,
const std::vector< String > &  data 
)
inline

Executes raw data SQL statements (insert statements)

This is useful for a case where raw data should be inserted into sqlite databases, and the raw data needs to be passed separately as it cannot be part of a true SQL statement

INSERT INTO TBL (ID, DATA) VALUES (100, ?1), (101, ?2), (102, ?3)"

See also https://www.sqlite.org/c3ref/bind_blob.html

statement The SQL statement data The data to bind

Exceptions
Exception::IllegalArgumentis thrown if the SQL command fails.

◆ executeBindStatement() [2/2]

static void executeBindStatement ( sqlite3 *  db,
const String prepare_statement,
const std::vector< String > &  data 
)
static

Executes raw data SQL statements (insert statements)

This is useful for a case where raw data should be inserted into sqlite databases, and the raw data needs to be passed separately as it cannot be part of a true SQL statement

INSERT INTO TBL (ID, DATA) VALUES (100, ?1), (101, ?2), (102, ?3)"

See also https://www.sqlite.org/c3ref/bind_blob.html

db The sqlite database (needs to be open) statement The SQL statement data The data to bind

Exceptions
Exception::IllegalArgumentis thrown if the SQL command fails.

◆ executeStatement() [1/4]

void executeStatement ( const std::stringstream &  statement)
inline

Executes a given SQL statement (insert statement)

This is useful for writing a single row of data

statement The SQL statement

◆ executeStatement() [2/4]

void executeStatement ( const String statement)
inline

Executes a given SQL statement (insert statement)

This is useful for writing a single row of data

statement The SQL statement

Exceptions
Exception::IllegalArgumentis thrown if the SQL command fails.

◆ executeStatement() [3/4]

static void executeStatement ( sqlite3 *  db,
const std::stringstream &  statement 
)
static

Executes a given SQL statement (insert statement)

This is useful for writing a single row of data. It wraps sqlite3_exec with proper error handling.

db The sqlite database (needs to be open) statement The SQL statement

Exceptions
Exception::IllegalArgumentis thrown if the SQL command fails.

◆ executeStatement() [4/4]

static void executeStatement ( sqlite3 *  db,
const String statement 
)
static

Executes a given SQL statement (insert statement)

This is useful for writing a single row of data. It wraps sqlite3_exec with proper error handling.

db The sqlite database (needs to be open) statement The SQL statement

Exceptions
Exception::IllegalArgumentis thrown if the SQL command fails.

◆ getDB()

sqlite3* getDB ( )
inline

Returns the raw pointer to the database.

Note
The pointer is tied to the lifetime of the SqliteConnector object, do not use it after the object has gone out of scope!
Returns
SQLite database ptr

◆ openDatabase()

void openDatabase ( const String filename)
protected

Opens a new SQLite database.

@filename Filename of the database

Note
Call this only once!

◆ prepareStatement() [1/2]

static void prepareStatement ( sqlite3 *  db,
sqlite3_stmt **  stmt,
const String prepare_statement 
)
static

Converts an SQL statement into a prepared statement.

This routine converts SQL text into a prepared statement object and returns a pointer to that object. This interface requires a database connection created by a prior call to sqlite3_open() and a text string containing the SQL statement to be prepared. This API does not actually evaluate the SQL statement. It merely prepares the SQL statement for evaluation.

This is useful for handling errors in a consistent manner. Internally calls sqlite3_prepare_v2.

db The sqlite database (needs to be open) stmt The prepared statement (output) prepare_statement The SQL statement to prepare (input)

Exceptions
Exception::IllegalArgumentis thrown if the SQL command fails.

◆ prepareStatement() [2/2]

void prepareStatement ( sqlite3_stmt **  stmt,
const String prepare_statement 
)
inline

Prepares a SQL statement.

This is useful for handling errors in a consistent manner.

db The sqlite database (needs to be open) statement The SQL statement data The data to bind

Exceptions
Exception::IllegalArgumentis thrown if the SQL command fails.

◆ tableExists() [1/2]

bool tableExists ( const String tablename)
inline

Checks whether the given table exists.

tablename The name of the table to be checked

Returns
Whether the table exists or not

◆ tableExists() [2/2]

static bool tableExists ( sqlite3 *  db,
const String tablename 
)
static

Checks whether the given table exists.

db The sqlite database (needs to be open) tablename The name of the table to be checked

Returns
Whether the table exists or not

Member Data Documentation

◆ db_

sqlite3* db_
protected