diff --git a/Makefile b/Makefile index 8d4ce21..b5cff6c 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ CC=c++ -CFLAGS=-std=c++11 -lsqlite3 +CFLAGS=-std=c++20 -lsqlite3 all: $(CC) $(CFLAGS) main.cpp -o sqlite diff --git a/README.md b/README.md new file mode 100644 index 0000000..344ae86 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# sqlitecpp +Lightweight Sqlite wrapper on c++
+Query result returns as *std::optional>. Columns splited by "|" symbol. Need a sqlite3 libraries for compile diff --git a/sqliteclient.cpp b/sqliteclient.cpp index 619cd48..ab900cf 100644 --- a/sqliteclient.cpp +++ b/sqliteclient.cpp @@ -1,3 +1,4 @@ +#include #include "sqliteclient.hpp" SqliteClient::SqliteClient(const char *fileName) @@ -19,17 +20,18 @@ void SqliteClient::connect() this->connected=true; } -void SqliteClient::executeQuery(const char* query, std::vector &resVec) +std::optional> *SqliteClient::executeQuery(const char* query) { if(!this->connected) - return; + return nullptr; + auto *res=new std::optional>(); std::string queryType; uint8_t i=0; - while(query[i]!=*" ") + while(query[i]!=' ') queryType+=query[i++]; if(queryType=="SELECT") { - std::vector *selectRes=new std::vector(); + std::vector selectRes; sqlite3_stmt *stmt; sqlite3_prepare_v2(db, query, -1, &stmt, NULL); uint8_t colCount=sqlite3_column_count(stmt); @@ -38,23 +40,53 @@ void SqliteClient::executeQuery(const char* query, std::vector &res for(uint8_t i=0;ipush_back(colNames); + selectRes.push_back(colNames); while(sqlite3_column_text(stmt, 0)) { std::string str; for(uint8_t i=0;ipush_back(str); + selectRes.push_back(str); sqlite3_step(stmt); } - resVec=*selectRes; - delete selectRes; + res->emplace(selectRes); + return res; } else { sqlite3_exec(db, query, NULL, 0, 0); + return nullptr; + } +} + +void SqliteClient::executeQuery(const char *query, std::vector> *queryResult) +{ + if(!connected) + return; + + uint8_t i=0; + std::string queryType=""; + size_t querySize=strlen(query); + while(query[i]!=' '&&i row; + for(uint8_t i=0;icloseConnection(); } diff --git a/sqliteclient.hpp b/sqliteclient.hpp index 12aca18..b029137 100644 --- a/sqliteclient.hpp +++ b/sqliteclient.hpp @@ -1,13 +1,21 @@ +#ifndef SQLITE_CLIENT_HPP +#define SQLITE_CLIENT_HPP + #include #include +#include #include +#include + class SqliteClient { public: SqliteClient(const char *fileName); void connect(); - void executeQuery(const char* query, std::vector &resVec); - void returnResult(std::vector &resVec); + //void executeQuery(const char* query, std::vector &resVec); + std::optional> *executeQuery(const char* query); + + void executeQuery(const char *query, std::vector> *queryResult); void closeConnection(); ~SqliteClient(); private: @@ -15,3 +23,5 @@ class SqliteClient const char* fileName; bool connected=false; }; + +#endif