sqlite3-statement.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2013-2022 Regents of the University of California.
4  *
5  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
6  *
7  * ndn-cxx library is free software: you can redistribute it and/or modify it under the
8  * terms of the GNU Lesser General Public License as published by the Free Software
9  * Foundation, either version 3 of the License, or (at your option) any later version.
10  *
11  * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
12  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13  * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
14  *
15  * You should have received copies of the GNU General Public License and GNU Lesser
16  * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
17  * <http://www.gnu.org/licenses/>.
18  *
19  * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
20  */
21 
22 #ifndef NDN_CXX_UTIL_SQLITE3_STATEMENT_HPP
23 #define NDN_CXX_UTIL_SQLITE3_STATEMENT_HPP
24 
26 
27 struct sqlite3;
28 struct sqlite3_stmt;
29 
30 namespace ndn {
31 namespace util {
32 
37 class Sqlite3Statement : noncopyable
38 {
39 public:
46  Sqlite3Statement(sqlite3* database, const std::string& statement);
47 
52 
62  int
63  bind(int index, const char* value, size_t size, void(*destructor)(void*));
64 
73  int
74  bind(int index, const std::string& value, void(*destructor)(void*));
75 
85  int
86  bind(int index, const void* value, size_t size, void(*destructor)(void*));
87 
96  int
97  bind(int index, const Block& block, void(*destructor)(void*));
98 
106  int
107  bind(int index, int number);
108 
112  std::string
113  getString(int column);
114 
118  Block
119  getBlock(int column);
120 
124  int
125  getInt(int column);
126 
130  const uint8_t*
131  getBlob(int column);
132 
136  int
137  getSize(int column);
138 
142  int
143  step();
144 
148  operator sqlite3_stmt*();
149 
150 private:
151  sqlite3_stmt* m_stmt;
152 };
153 
154 } // namespace util
155 } // namespace ndn
156 
157 #endif // NDN_CXX_UTIL_SQLITE3_STATEMENT_HPP
Represents a TLV element of the NDN packet format.
Definition: block.hpp:45
Wrap an SQLite3 prepared statement.
Sqlite3Statement(sqlite3 *database, const std::string &statement)
Initialize and prepare Sqlite3 statement.
int bind(int index, const char *value, size_t size, void(*destructor)(void *))
Bind a string to the statement.
int getInt(int column)
Get an integer from column.
const uint8_t * getBlob(int column)
Get a pointer of byte blob from column.
Block getBlock(int column)
Get a block from column.
~Sqlite3Statement()
Finalize the statement.
int getSize(int column)
Get the size of column.
int step()
Wrapper of sqlite3_step.
std::string getString(int column)
Get a string from column.
Definition: data.cpp:25