diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
commit | 8362bf63dea22bbf6736609b0f49c152f975eb63 (patch) | |
tree | 0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kexi/plugins/scripting/kexidb/kexidbconnection.h | |
download | koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip |
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kexi/plugins/scripting/kexidb/kexidbconnection.h')
-rw-r--r-- | kexi/plugins/scripting/kexidb/kexidbconnection.h | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/kexi/plugins/scripting/kexidb/kexidbconnection.h b/kexi/plugins/scripting/kexidb/kexidbconnection.h new file mode 100644 index 00000000..7e1a7d3a --- /dev/null +++ b/kexi/plugins/scripting/kexidb/kexidbconnection.h @@ -0,0 +1,194 @@ +/*************************************************************************** + * kexidbconnection.h + * This file is part of the KDE project + * copyright (C)2004-2005 by Sebastian Sauer ([email protected]) + * + * This program 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 program 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 program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + ***************************************************************************/ + +#ifndef KROSS_KEXIDB_KEXIDBCONNECTION_H +#define KROSS_KEXIDB_KEXIDBCONNECTION_H + +#include <qstring.h> +#include <ksharedptr.h> + +#include <api/object.h> +#include <api/variant.h> +#include <api/list.h> +#include <api/class.h> + +//#include <kexidb/driver.h> +#include <kexidb/connection.h> + +namespace Kross { namespace KexiDB { + + // Forward declarations. + class KexiDBDriver; + class KexiDBConnectionData; + class KexiDBCursor; + class KexiDBTableSchema; + class KexiDBQuerySchema; + class KexiDBTransaction; + class KexiDBParser; + + /** + * A connection to a database. + * + * Example (in Python) ; + * @code + * # Import the kexidb module. + * import krosskexidb + * # Get the drivermanager. + * drivermanager = krosskexidb.DriverManager() + * # We need a connectiondata object. + * connectiondata = drivermanager.createConnectionData() + * # Fill the new connectiondata object with what we need to connect. + * connectiondata.setFileName("/home/user/kexisqlite3file.kexi") + * # Create the database-driver to access the SQLite3 backend. + * driver = drivermanager.driver("SQLite3") + * # Create the connection now. + * connection = driver.createConnection(connectiondata) + * # Establish the connection. + * if not connection.connect(): raise("Failed to connect with db") + * # Open database for usage. The filebased driver uses the filename as databasename. + * if not connection.useDatabase("/home/user/kexisqlite3file.kexi"): raise("Failed to use db") + * @endcode + */ + class KexiDBConnection : public Kross::Api::Class<KexiDBConnection> + { + public: + KexiDBConnection(::KexiDB::Connection* connection, KexiDBDriver* driver = 0, KexiDBConnectionData* connectiondata = 0); + virtual ~KexiDBConnection(); + virtual const QString getClassName() const; + + private: + + /** Return true if there was an error during last operation on the database. */ + bool hadError() const; + /** Return the last errormessage. */ + const QString lastError() const; + + /** Return the KexiDBConnectionData object used to create this connection. */ + KexiDBConnectionData* data(); + /** Return the KexiDBDriver object this connection belongs too. */ + KexiDBDriver* driver(); + + /** Try to connect and return true if we are successfully connected now. */ + bool connect(); + /** Return true if we are connected. */ + bool isConnected(); + /** Disconnect and return true if we are successfully disconnected now. */ + bool disconnect(); + + /** Returns true if the connection is read-only. */ + bool isReadOnly() const; + + /** Return true if the as argument passed databasename exists. */ + bool databaseExists(const QString& dbname); + /** Return the name of currently used database for this connection or empty + string if there is no used database. */ + const QString currentDatabase() const; + /** Return list of database names for opened connection. */ + const QStringList databaseNames() const; + /** Return true if connection is properly established. */ + bool isDatabaseUsed() const; + /** Opens an existing database specified by the as argument passed databasename + and returns true if the database is used now. */ + bool useDatabase(const QString& dbname); + /** Closes currently used database for this connection. */ + bool closeDatabase(); + + /** Return names of all table schemas stored in currently used database include the + internal KexiDB system table names (kexi__*) */ + const QStringList allTableNames() const; + /** Return names of all table schemas without the internal KexiDB system table names (kexi__*) */ + const QStringList tableNames() const; + /** Return names of all query schemas stored in currently used database. */ + const QStringList queryNames() const; + + /** Executes query described by the as argument passed sqlstatement-string. Returns the + opened cursor created for results of this query. */ + KexiDBCursor* executeQueryString(const QString& sqlquery); + /** Executes query described by the as argument passed KexiDBQuerySchema object. Returns + the opened cursor created for results of this query. */ + KexiDBCursor* executeQuerySchema(KexiDBQuerySchema* queryschema); + +//TODO replace following method with a proxymethod. + /** Inserts the as argument passed KexiDBField object. */ + Kross::Api::Object::Ptr insertRecord(Kross::Api::List::Ptr); + + /** Creates new database with the as argument passed databasename. */ + bool createDatabase(const QString& dbname); + /** Drops the as argument passed databasename. */ + bool dropDatabase(const QString& dbname); + + /** Creates table defined by the as argument passed KexiTableSchema object. */ + bool createTable(KexiDBTableSchema* tableschema); + /** Drops table defined by the as argument passed KexiDBTableSchema object. */ + bool dropTable(const QString& tablename); + /** Alters the as first argument passed KexiDBTableSchema object using the as + second argument passed KexiDBTableSchema. */ + bool alterTable(KexiDBTableSchema* fromschema, KexiDBTableSchema* toschema); + /** Alters the tablename of the as first argument passed KexiDBTableSchema into + the as second argument passed new tablename. */ + bool alterTableName(KexiDBTableSchema* tableschema, const QString& newtablename); + + /** Returns the KexiDBTableSchema object of the table matching to the as argument + passed tablename. */ + KexiDBTableSchema* tableSchema(const QString& tablename) const; + /** Returns true if there is at least one valid record in the as argument passed tablename. */ + bool isEmptyTable(KexiDBTableSchema* tableschema) const; + /** Returns the KexiDBQuerySchema object of the query matching to the as argument passed queryname. */ + KexiDBQuerySchema* querySchema(const QString& queryname) const; + + /** Return true if the \"auto commit\" option is on. */ + bool autoCommit() const; + /** Set the auto commit option. This does not affect currently started transactions and can + be changed even when connection is not established. */ + bool setAutoCommit(bool enabled); + + /** Creates new transaction handle and starts a new transaction. */ + KexiDBTransaction* beginTransaction(); + /** Commits the as rgument passed KexiDBTransaction object. */ + bool commitTransaction(KexiDBTransaction* transaction); + /** Rollback the as rgument passed KexiDBTransaction object. */ + bool rollbackTransaction(KexiDBTransaction* transaction); + /** Return the KEXIDBTransaction object for default transaction for this connection. */ + KexiDBTransaction* defaultTransaction(); + /** Sets default transaction that will be used as context for operations on data in opened + database for this connection. */ + void setDefaultTransaction(KexiDBTransaction* transaction); + + /** Return list of currently active KexiDBTransaction objects. */ + Kross::Api::List* transactions(); + + /** Return a KexiDBParser object. */ + KexiDBParser* parser(); + + private: + ::KexiDB::Connection* connection() const; + ::KexiDB::Connection* m_connection; + + KSharedPtr<KexiDBConnectionData> m_connectiondata; + KSharedPtr<KexiDBDriver> m_driver; + + /// Initialize the class instance. + void initialize(); + + }; + +}} + +#endif + |