00001 /* Copyright (C) 2002, 2003, 2004 Jan Wedekind. 00002 This file is part of the recipe database application AnyMeal. 00003 00004 AnyMeal is free software; you can redistribute it and/or modify it under 00005 the terms of the GNU GENERAL PUBLIC LICENSE as published by the Free 00006 Software Foundation; either version 3 of the License, or (at your option) 00007 any later version. 00008 00009 AnyMeal is distributed in the hope that it will be useful, but WITHOUT ANY 00010 WARRANTY; without even the implied warranty of MERCHANTIBILITY or FITNESS 00011 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 00012 details. 00013 00014 You should have received a copy of the GNU General Public License 00015 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 00016 #ifndef __DATABASE_HPP 00017 #define __DATABASE_HPP 00018 00019 #include "include.hpp" 00020 #include <boost/smart_ptr.hpp> 00021 #include "error.hpp" 00022 #include "server.hpp" 00023 #include "statement.hpp" 00024 00030 class Database: public Object 00031 { 00032 public: 00036 Database( ServerPtr _server ): server( _server ) {} 00040 virtual StatementPtr execQuery( const std::string &query ) 00041 throw (Error) = 0; 00043 void execScript( const std::string &script ) throw (Error); 00045 void execScript( std::istream &stream ) throw (Error); 00047 ServerPtr getServer(void) const { return server; } 00048 protected: 00050 ServerPtr server; 00051 }; 00052 00054 typedef boost::shared_ptr< Database > DatabasePtr; 00055 00057 00058 #endif