src/PreparedStatement.h
branchv_0
changeset 36 91cb012d779a
parent 33 86ceb97db7de
child 53 cc6ffeba0fe5
--- a/src/PreparedStatement.h	Mon May 25 21:11:17 2020 +0200
+++ b/src/PreparedStatement.h	Sun May 31 16:56:07 2020 +0200
@@ -16,10 +16,15 @@
  */
 #pragma once
 
+#include <list>
+#include <string>
+#include <utility>
+
 #include <relpipe/reader/typedefs.h>
 #include <relpipe/reader/TypeId.h>
 #include <relpipe/writer/TypeId.h>
 #include "SqlException.h"
+#include "ResultSet.h"
 
 namespace relpipe {
 namespace tr {
@@ -27,20 +32,21 @@
 
 class PreparedStatement {
 private:
-	void* stmt;
+	void* statement;
+	std::wstring_convert<std::codecvt_utf8<wchar_t>> convertor; // TODO: support also other encodings
+	std::list<relpipe::reader::boolean_t> booleanParameters;
+	std::list<relpipe::reader::integer_t> integerParameters;
+	std::list<std::pair<std::string, long>> stringParameters;
 public:
 	PreparedStatement(void* stmt);
 	virtual ~PreparedStatement();
-	void setBoolean(int parameterIndex, relpipe::reader::boolean_t value);
-	void setInteger(int parameterIndex, relpipe::reader::integer_t value);
-	void setString(int parameterIndex, std::string value);
-	void setNull(int parameterIndex);
-	bool next();
+	ResultSet* executeQuery();
+	long executeUpdate();
 	void reset();
-	int getColumnCount();
-	std::string getColumName(int columnIndex);
-	relpipe::writer::TypeId getColumType(int columnIndex, relpipe::writer::TypeId defaultType = relpipe::writer::TypeId::STRING);
-	std::string getString(int columnIndex);
+	void setBoolean(int parameterNumber, relpipe::reader::boolean_t value);
+	void setInteger(int parameterNumber, relpipe::reader::integer_t value);
+	void setString(int parameterNumber, relpipe::reader::string_t value);
+	void setNull(int parameterNumber);
 };
 
 }