summaryrefslogtreecommitdiffstats
path: root/kexi/kexidb/drivers/sqlite/sqlitedriver.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-01-20 01:29:50 +0000
commit8362bf63dea22bbf6736609b0f49c152f975eb63 (patch)
tree0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kexi/kexidb/drivers/sqlite/sqlitedriver.cpp
downloadkoffice-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/kexidb/drivers/sqlite/sqlitedriver.cpp')
-rw-r--r--kexi/kexidb/drivers/sqlite/sqlitedriver.cpp159
1 files changed, 159 insertions, 0 deletions
diff --git a/kexi/kexidb/drivers/sqlite/sqlitedriver.cpp b/kexi/kexidb/drivers/sqlite/sqlitedriver.cpp
new file mode 100644
index 000000000..e2abc2466
--- /dev/null
+++ b/kexi/kexidb/drivers/sqlite/sqlitedriver.cpp
@@ -0,0 +1,159 @@
+/* This file is part of the KDE project
+ Copyright (C) 2003-2004 Jaroslaw Staniek <js@iidea.pl>
+
+ 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.
+*/
+
+#include <kexidb/connection.h>
+#include <kexidb/drivermanager.h>
+#include <kexidb/driver_p.h>
+#include <kexidb/utils.h>
+
+#include "sqlite.h"
+#include "sqlitedriver.h"
+#include "sqliteconnection.h"
+#include "sqliteconnection_p.h"
+#include "sqliteadmin.h"
+
+#include <kdebug.h>
+
+using namespace KexiDB;
+
+#ifdef SQLITE2
+KEXIDB_DRIVER_INFO( SQLiteDriver, sqlite2 )
+#else
+KEXIDB_DRIVER_INFO( SQLiteDriver, sqlite3 )
+#endif
+
+//! driver specific private data
+//! @internal
+class KexiDB::SQLiteDriverPrivate
+{
+ public:
+ SQLiteDriverPrivate()
+ {
+ }
+};
+
+//PgSqlDB::PgSqlDB(QObject *parent, const char *name, const QStringList &)
+SQLiteDriver::SQLiteDriver( QObject *parent, const char *name, const QStringList &args )
+ : Driver( parent, name, args )
+ ,dp( new SQLiteDriverPrivate() )
+{
+ d->isFileDriver = true;
+ d->isDBOpenedAfterCreate = true;
+ d->features = SingleTransactions | CursorForward
+#ifndef SQLITE2
+ | CompactingDatabaseSupported;
+#endif
+ ;
+
+ //special method for autoincrement definition
+ beh->SPECIAL_AUTO_INCREMENT_DEF = true;
+ beh->AUTO_INCREMENT_FIELD_OPTION = ""; //not available
+ beh->AUTO_INCREMENT_TYPE = "INTEGER";
+ beh->AUTO_INCREMENT_PK_FIELD_OPTION = "PRIMARY KEY";
+ beh->AUTO_INCREMENT_REQUIRES_PK = true;
+ beh->ROW_ID_FIELD_NAME = "OID";
+ beh->_1ST_ROW_READ_AHEAD_REQUIRED_TO_KNOW_IF_THE_RESULT_IS_EMPTY=true;
+ beh->QUOTATION_MARKS_FOR_IDENTIFIER='"';
+ beh->SELECT_1_SUBQUERY_SUPPORTED = true;
+ beh->SQL_KEYWORDS = keywords;
+ initSQLKeywords(29);
+
+ //predefined properties
+ d->properties["client_library_version"] = sqlite_libversion();
+ d->properties["default_server_encoding"] =
+#ifdef SQLITE2
+ sqlite_libencoding();
+#else //SQLITE3
+ "UTF8"; //OK?
+#endif
+
+ d->typeNames[Field::Byte]="Byte";
+ d->typeNames[Field::ShortInteger]="ShortInteger";
+ d->typeNames[Field::Integer]="Integer";
+ d->typeNames[Field::BigInteger]="BigInteger";
+ d->typeNames[Field::Boolean]="Boolean";
+ d->typeNames[Field::Date]="Date"; // In fact date/time types could be declared as datetext etc.
+ d->typeNames[Field::DateTime]="DateTime"; // to force text affinity..., see http://sqlite.org/datatype3.html
+ d->typeNames[Field::Time]="Time"; //
+ d->typeNames[Field::Float]="Float";
+ d->typeNames[Field::Double]="Double";
+ d->typeNames[Field::Text]="Text";
+ d->typeNames[Field::LongText]="CLOB";
+ d->typeNames[Field::BLOB]="BLOB";
+}
+
+SQLiteDriver::~SQLiteDriver()
+{
+ delete dp;
+}
+
+
+KexiDB::Connection*
+SQLiteDriver::drv_createConnection( ConnectionData &conn_data )
+{
+ return new SQLiteConnection( this, conn_data );
+}
+
+bool SQLiteDriver::isSystemObjectName( const QString& n ) const
+{
+ return Driver::isSystemObjectName(n) || n.lower().startsWith("sqlite_");
+}
+
+bool SQLiteDriver::drv_isSystemFieldName( const QString& n ) const
+{
+ return n.lower()=="_rowid_"
+ || n.lower()=="rowid"
+ || n.lower()=="oid";
+}
+
+QString SQLiteDriver::escapeString(const QString& str) const
+{
+ return QString("'")+QString(str).replace( '\'', "''" ) + "'";
+}
+
+QCString SQLiteDriver::escapeString(const QCString& str) const
+{
+ return QCString("'")+QCString(str).replace( '\'', "''" )+"'";
+}
+
+QString SQLiteDriver::escapeBLOB(const QByteArray& array) const
+{
+ return KexiDB::escapeBLOB(array, KexiDB::BLOBEscapeXHex);
+}
+
+QString SQLiteDriver::drv_escapeIdentifier( const QString& str) const
+{
+ return QString(str).replace( '"', "\"\"" );
+}
+
+QCString SQLiteDriver::drv_escapeIdentifier( const QCString& str) const
+{
+ return QCString(str).replace( '"', "\"\"" );
+}
+
+AdminTools* SQLiteDriver::drv_createAdminTools() const
+{
+#ifdef SQLITE2
+ return new AdminTools(); //empty impl.
+#else
+ return new SQLiteAdminTools();
+#endif
+}
+
+#include "sqlitedriver.moc"