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-2023 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::util {
31 
36 class Sqlite3Statement : noncopyable
37 {
38 public:
45  Sqlite3Statement(sqlite3* database, const std::string& statement);
46 
51 
61  int
62  bind(int index, const char* value, size_t size, void(*destructor)(void*));
63 
72  int
73  bind(int index, const std::string& value, void(*destructor)(void*));
74 
84  int
85  bind(int index, const void* value, size_t size, void(*destructor)(void*));
86 
95  int
96  bind(int index, const Block& block, void(*destructor)(void*));
97 
105  int
106  bind(int index, int number);
107 
111  std::string
112  getString(int column);
113 
117  Block
118  getBlock(int column);
119 
123  int
124  getInt(int column);
125 
129  const uint8_t*
130  getBlob(int column);
131 
135  int
136  getSize(int column);
137 
141  int
142  step();
143 
147  operator sqlite3_stmt*();
148 
149 private:
150  sqlite3_stmt* m_stmt;
151 };
152 
153 } // namespace ndn::util
154 
155 #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.