165 lines
5.0 KiB
C++
165 lines
5.0 KiB
C++
// Copyright (C) 2011 Davis E. King (davis@dlib.net)
|
|
// License: Boost Software License See LICENSE.txt for the full license.
|
|
#undef DLIB_SQLiTE_TOOLS_ABSTRACT_H_
|
|
#ifdef DLIB_SQLiTE_TOOLS_ABSTRACT_H_
|
|
|
|
|
|
#include "sqlite_abstract.h"
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
namespace dlib
|
|
{
|
|
|
|
class transaction : noncopyable
|
|
{
|
|
/*!
|
|
WHAT THIS OBJECT REPRESENTS
|
|
This object is a tool for creating exception safe
|
|
database transactions.
|
|
!*/
|
|
|
|
public:
|
|
transaction (
|
|
database& db
|
|
);
|
|
/*!
|
|
ensures
|
|
- Begins a database transaction which will be rolled back
|
|
if commit() isn't called eventually.
|
|
- In particular, performs: db.exec("begin transaction");
|
|
!*/
|
|
|
|
void commit (
|
|
);
|
|
/*!
|
|
ensures
|
|
- if (commit() hasn't already been called) then
|
|
- Commits all changes made during this database transaction.
|
|
- In particular, performs: db.exec("commit");
|
|
- else
|
|
- does nothing
|
|
!*/
|
|
|
|
~transaction(
|
|
);
|
|
/*!
|
|
ensures
|
|
- if (commit() was never called) then
|
|
- rolls back any changes made to the database during this transaction.
|
|
- In particular, performs: db.exec("rollback");
|
|
- else
|
|
- does nothing
|
|
!*/
|
|
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
template <
|
|
typename T
|
|
>
|
|
void query_object (
|
|
database& db,
|
|
const std::string& query,
|
|
T& item
|
|
);
|
|
/*!
|
|
ensures
|
|
- executes the given SQL query against db. If the query results in a
|
|
single row and column being returned then the data in the column is
|
|
interpreted as a binary BLOB and deserialized into item.
|
|
throws
|
|
- sqlite_error or serialization_error if an error occurs which prevents
|
|
this operation from succeeding.
|
|
|
|
!*/
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
std::string query_text (
|
|
database& db,
|
|
const std::string& query
|
|
);
|
|
/*!
|
|
ensures
|
|
- executes the given SQL query against db. If the query results in a
|
|
single row and column being returned then the data in the column is
|
|
converted to text and returned.
|
|
throws
|
|
- sqlite_error if an error occurs which prevents this operation from
|
|
succeeding.
|
|
!*/
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
double query_double (
|
|
database& db,
|
|
const std::string& query
|
|
);
|
|
/*!
|
|
ensures
|
|
- executes the given SQL query against db. If the query results in a
|
|
single row and column being returned then the data in the column is
|
|
converted to a double and returned.
|
|
throws
|
|
- sqlite_error if an error occurs which prevents this operation from
|
|
succeeding.
|
|
!*/
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
int query_int (
|
|
database& db,
|
|
const std::string& query
|
|
);
|
|
/*!
|
|
ensures
|
|
- executes the given SQL query against db. If the query results in a
|
|
single row and column being returned then the data in the column is
|
|
converted to an int and returned.
|
|
throws
|
|
- sqlite_error if an error occurs which prevents this operation from
|
|
succeeding.
|
|
!*/
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
int64 query_int64 (
|
|
database& db,
|
|
const std::string& query
|
|
);
|
|
/*!
|
|
ensures
|
|
- executes the given SQL query against db. If the query results in a
|
|
single row and column being returned then the data in the column is
|
|
converted to an int64 and returned.
|
|
throws
|
|
- sqlite_error if an error occurs which prevents this operation from
|
|
succeeding.
|
|
!*/
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
const std::vector<char> query_blob (
|
|
database& db,
|
|
const std::string& query
|
|
);
|
|
/*!
|
|
ensures
|
|
- executes the given SQL query against db. If the query results in a
|
|
single row and column being returned then the data in the column is
|
|
returned as a binary BLOB.
|
|
throws
|
|
- sqlite_error if an error occurs which prevents this operation from
|
|
succeeding.
|
|
!*/
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
}
|
|
|
|
#endif // DLIB_SQLiTE_TOOLS_H_
|
|
|
|
|