|
|
/* This file is part of the KDB libraries Copyright (c) 2000 Praduroux Alessandro <pradu@thekompany.com> 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.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef KDB_DATABASE_H #define KDB_DATABASE_H "$Id: database.h,v 1.4 2001/02/01 03:15:49 garbanzo Exp $" #include <qstring.h> #include <qstringlist.h> #include <qlist.h> #include <qvaluelist.h> #include <ksharedptr.h> #include <kdb/table.h> #include <kdb/query.h> #include <kdb/recordset.h> #include <kdb/object.h> namespace KDB { class Connector; class Database; typedef QList<Database> DatabaseList; typedef QListIterator<Database> DatabaseIterator; /** * Central access point to all functionality of the single database. * * That means it provides a list of all queries and tables, and is able to execute * a command query and to return a recordset for a given query. * * Tables and queries can be accessed by name, and the class can * provide collection objects for both. * * * @author Alessandro Praduroux <pradu@thekompany.com> * @version kdbcore 0.0.2 */ class Database : public Object{ friend class Connection; Q_OBJECT public: Database(const Database & base); virtual ~Database(); /** * creates a new table for the current database. * please note that the table is not yet part of the * database until you call @ref KDB::Table::create */ TablePtr newTable(const QString &name); /** * returns an existing table by name, or 0L if the * table does not exists */ TablePtr getTable(const QString &name); /** * return the list of available tables. * tables whose name begins with "__" ( so called * system tables) will be returned only if system = true */ TableList tables(bool system = false); /** * return a list of names of available tables. * tables whose name begins with "__" ( so called * system tables) will be returned only if system = true */ QStringList tableNames(bool system = false); /** * removes a table from the database. This means * that the table is dropped, and all the content * is erased */ bool removeTable(const QString &name); /** * creates a new query * * @param name this is the name of the query * * @param SQL this is the sql executed by the * query. if it is not given, the query can be built * with addTable, addField and so on */ QueryPtr newQuery(const QString &name, const QString &SQL = QString::null); /** * returns an existing query by name, or 0L if the * query does not exists */ QueryPtr getQuery(const QString &name); /** * return the list of available queries */ QueryList queries(); /** * return the list of names of available queries */ QStringList queryNames(); /** * removes a query from the database. */ bool removeQuery(const QString &name); /** * creates a recordset based on a given query. * if the query fails, 0L is returned. you can then * check @ref errorMessage() to get a specific error * message */ RecordsetPtr openRecordset(const QString &SQL); /** * exec a command query. returns the number of * records affected */ KDB_ULONG execute(const QString &SQL); bool open(); void close(); bool isOpen(); signals: void tableAdded( QString ); void tableRemoved( QString ); void queryAdded( QString ); void queryRemoved( QString ); void changed(); void closed(); void opened(); protected slots: void tableCreated( KDB::Table * ); private: Connector * connector; QStringList m_tables; QStringList m_queries; bool m_open; Database(Connector *conn, QObject *parent, const char *name ); void createQueryTable(); }; } #endif
Generated by: root@powerpc.ports.openbsd.org on Tue Apr 24 23:01:57 2001, using kdoc 2.0a53. |