1 #ifndef _sqlite3dbstatement_
\r
2 #define _sqlite3dbstatement_
\r
4 #include "sqlite3db.h"
\r
6 #include <Poco/Mutex.h>
\r
18 Statement(sqlite3_stmt *statement);
\r
19 Statement(const Statement &rhs);
\r
20 virtual ~Statement();
\r
22 virtual const int ParameterCount() { return m_parametercount; }
\r
23 virtual const int ResultColumnCount() { return m_resultcolumncount; }
\r
25 virtual const bool Valid();
\r
27 virtual void Finalize();
\r
29 virtual const bool Reset();
\r
30 virtual const bool Step(const bool saveinsertrowid=false);
\r
32 virtual const bool RowReturned() { return m_rowreturned; }
\r
34 virtual const long GetLastInsertRowID() { return m_lastinsertrowid; }
\r
36 // both Bind and Result have column index starting at 0
\r
37 // Blob results are not copied, user must make a copy in memory if it needs to be used in the future
\r
39 virtual const bool Bind(const int column);
\r
40 virtual const bool Bind(const int column, const int value);
\r
41 virtual const bool Bind(const int column, const long value) { return Bind(column,static_cast<int>(value)); }
\r
42 virtual const bool Bind(const int column, const double value);
\r
43 virtual const bool Bind(const int column, const std::string &value);
\r
44 virtual const bool Bind(const int column, const void *data, const int length);
\r
46 virtual const bool ResultNull(const int column);
\r
47 virtual const bool ResultInt(const int column, int &result);
\r
48 virtual const bool ResultDouble(const int column, double &result);
\r
49 virtual const bool ResultText(const int column, std::string &result);
\r
50 virtual const bool ResultBlob(const int column, void *data, int &length);
\r
52 Statement &operator=(const Statement &rhs);
\r
55 sqlite3_stmt *m_statement;
\r
56 int m_parametercount;
\r
57 int m_resultcolumncount;
\r
59 long m_lastinsertrowid;
\r
61 static std::map<sqlite3_stmt *, long> m_statementcount;
\r
62 static Poco::FastMutex m_mutex; // protect all access to m_statementcount
\r
68 #endif // _sqlite3dbstatement_
\r