/* This file is part of libodbc++. Copyright (C) 1999-2000 Manush Dodunekov <manush@stendahls.net> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __ODBCXX_PREPAREDSTATEMENT_H #define __ODBCXX_PREPAREDSTATEMENT_H #include <odbc++/setup.h> #include <odbc++/types.h> #include <odbc++/statement.h> #if defined(ODBCXX_HAVE_ISO_CXXLIB) # include <iosfwd> #else # include <iostream> #endif namespace odbc { class Rowset; class ODBCXX_EXPORT PreparedStatement : public Statement { friend class Connection; private: void _prepare(); void _setupParams(); protected: ODBCXX_STRING sql_; //here we store the parameters Rowset* rowset_; size_t numParams_; std::vector<int> directions_; int defaultDirection_; bool paramsBound_; PreparedStatement(Connection* con, SQLHSTMT hstmt, const ODBCXX_STRING& sql, int resultSetType, int resultSetConcurrency, int defaultDirection =SQL_PARAM_INPUT); void _bindParams(); void _unbindParams(); void _checkParam(int idx, int* allowed, int numAllowed, int defPrec, int defScale); public: virtual ~PreparedStatement(); void clearParameters(); bool execute(); ResultSet* executeQuery(); int executeUpdate(); void setDouble(int idx, double val); void setBoolean(int idx, bool val); void setByte(int idx, signed char val); void setBytes(int idx, const ODBCXX_BYTES& val); void setDate(int idx, const Date& val); void setFloat(int idx, float val); void setInt(int idx, int val); void setLong(int idx, Long val); void setShort(int idx, short val); void setString(int idx, const ODBCXX_STRING& val); void setTime(int idx, const Time& val); void setTimestamp(int idx, const Timestamp& val); void setAsciiStream(int idx, ODBCXX_STREAM* s, int len); void setBinaryStream(int idx, ODBCXX_STREAM* s, int len); void setNull(int idx, int sqlType); }; }; // namespace odbc #endif // __ODBCXX_PREPAREDSTATEMENT_H