summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiedb/opiedb.pro3
-rw-r--r--libopie2/opiedb/osqlitedriver.cpp22
2 files changed, 18 insertions, 7 deletions
diff --git a/libopie2/opiedb/opiedb.pro b/libopie2/opiedb/opiedb.pro
index 3612f0e..bf547ab 100644
--- a/libopie2/opiedb/opiedb.pro
+++ b/libopie2/opiedb/opiedb.pro
@@ -1,18 +1,19 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on debug 2#CONFIG += qt warn_on debug
3CONFIG += qt warn_on release
3DESTDIR = $(OPIEDIR)/lib 4DESTDIR = $(OPIEDIR)/lib
4HEADERS = osqlbackend.h \ 5HEADERS = osqlbackend.h \
5 osqldriver.h \ 6 osqldriver.h \
6 osqlerror.h \ 7 osqlerror.h \
7 osqlmanager.h \ 8 osqlmanager.h \
8 osqlquery.h \ 9 osqlquery.h \
9 osqlresult.h \ 10 osqlresult.h \
10 osqltable.h \ 11 osqltable.h \
11 osqlbackendmanager.h \ 12 osqlbackendmanager.h \
12 osqlitedriver.h 13 osqlitedriver.h
13SOURCES = osqlbackend.cpp \ 14SOURCES = osqlbackend.cpp \
14 osqldriver.cpp \ 15 osqldriver.cpp \
15 osqlerror.cpp \ 16 osqlerror.cpp \
16 osqlmanager.cpp \ 17 osqlmanager.cpp \
17 osqlquery.cpp \ 18 osqlquery.cpp \
18 osqlresult.cpp \ 19 osqlresult.cpp \
diff --git a/libopie2/opiedb/osqlitedriver.cpp b/libopie2/opiedb/osqlitedriver.cpp
index 9214ad3..99fd218 100644
--- a/libopie2/opiedb/osqlitedriver.cpp
+++ b/libopie2/opiedb/osqlitedriver.cpp
@@ -1,22 +1,26 @@
1#include <stdlib.h> 1#include <stdlib.h>
2 2
3#include "osqlresult.h" 3#include "osqlresult.h"
4#include "osqlquery.h" 4#include "osqlquery.h"
5#include "osqlitedriver.h" 5#include "osqlitedriver.h"
6 6
7// fromLocal8Bit() does not work as expected. Thus it
8// is replaced by fromLatin1() (eilers)
9#define __BUGGY_LOCAL8BIT_
10
7 11
8namespace { 12namespace {
9 struct Query { 13 struct Query {
10 OSQLError::ValueList errors; 14 OSQLError::ValueList errors;
11 OSQLResultItem::ValueList items; 15 OSQLResultItem::ValueList items;
12 OSQLiteDriver *driver; 16 OSQLiteDriver *driver;
13 }; 17 };
14} 18}
15 19
16OSQLiteDriver::OSQLiteDriver( QLibrary *lib ) 20OSQLiteDriver::OSQLiteDriver( QLibrary *lib )
17 : OSQLDriver( lib ) 21 : OSQLDriver( lib )
18{ 22{
19 m_sqlite = 0l; 23 m_sqlite = 0l;
20} 24}
21OSQLiteDriver::~OSQLiteDriver() { 25OSQLiteDriver::~OSQLiteDriver() {
22 close(); 26 close();
@@ -67,60 +71,66 @@ bool OSQLiteDriver::close() {
67/* Query */ 71/* Query */
68OSQLResult OSQLiteDriver::query( OSQLQuery* qu) { 72OSQLResult OSQLiteDriver::query( OSQLQuery* qu) {
69 if ( !m_sqlite ) { 73 if ( !m_sqlite ) {
70 // FIXME set error code 74 // FIXME set error code
71 OSQLResult result( OSQLResult::Failure ); 75 OSQLResult result( OSQLResult::Failure );
72 return result; 76 return result;
73 } 77 }
74 Query query; 78 Query query;
75 query.driver = this; 79 query.driver = this;
76 char *err; 80 char *err;
77 /* SQLITE_OK 0 if return code > 0 == failure */ 81 /* SQLITE_OK 0 if return code > 0 == failure */
78 if ( sqlite_exec(m_sqlite, qu->query(),&call_back, &query, &err) > 0 ) { 82 if ( sqlite_exec(m_sqlite, qu->query(),&call_back, &query, &err) > 0 ) {
79 qWarning("Error while executing"); 83 qWarning("Error while executing");
80 free(err ); 84 free(err );
81 // FixMe Errors 85 // FixMe Errors
82 } 86 }
83 qWarning("Item count is %d", query.items.count() ); 87 // qWarning("Item count is %d", query.items.count() );
84 OSQLResult result(OSQLResult::Success, 88 OSQLResult result(OSQLResult::Success,
85 query.items, 89 query.items,
86 query.errors ); 90 query.errors );
87 return result; 91 return result;
88} 92}
89OSQLTable::ValueList OSQLiteDriver::tables() const { 93OSQLTable::ValueList OSQLiteDriver::tables() const {
90 94
91} 95}
92OSQLError OSQLiteDriver::lastError() { 96OSQLError OSQLiteDriver::lastError() {
93 OSQLError error; 97 OSQLError error;
94 return error; 98 return error;
95}; 99};
96/* handle a callback add the row to the global 100/* handle a callback add the row to the global
97 * OSQLResultItem 101 * OSQLResultItem
98 */ 102 */
99int OSQLiteDriver::handleCallBack( int, char**, char** ) { 103int OSQLiteDriver::handleCallBack( int, char**, char** ) {
100 return 0; 104 return 0;
101} 105}
102/* callback_handler add the values to the list*/ 106/* callback_handler add the values to the list*/
103int OSQLiteDriver::call_back( void* voi, int argc, 107int OSQLiteDriver::call_back( void* voi, int argc,
104 char** argv, char** columns) { 108 char** argv, char** columns) {
105 qWarning("Callback with %d items", argc ); 109 // qWarning("Callback with %d items", argc );
106 Query* qu = (Query*)voi; 110 Query* qu = (Query*)voi;
107 111
108 //copy them over to a OSQLResultItem 112 //copy them over to a OSQLResultItem
109 QMap<QString, QString> tableString; 113 QMap<QString, QString> tableString;
110 QMap<int, QString> tableInt; 114 QMap<int, QString> tableInt;
111 for (int i = 0; i < argc; i++ ) { 115 for (int i = 0; i < argc; i++ ) {
112 qWarning("%s|%s", columns[i], argv[i] ); 116 //qWarning("%s|%s", columns[i], argv[i] );
113 tableInt.insert( i, QString::fromLocal8Bit(argv[i] ) );
114 tableString.insert( QString::fromLocal8Bit( columns[i]),
115 QString::fromLocal8Bit( argv[i] ) );
116 117
118#ifdef __BUGGY_LOCAL8BIT_
119 tableInt.insert( i, QString::fromLatin1( argv[i] ) );
120 tableString.insert( QString::fromLatin1( columns[i] ),
121 QString::fromLatin1( argv[i] ) );
122#else
123 tableInt.insert( i, QString::fromLocal8Bit( argv[i] ) );
124 tableString.insert( QString::fromLocal8Bit( columns[i] ),
125 QString::fromLocal8Bit( argv[i] ) );
126#endif
117 } 127 }
118 OSQLResultItem item( tableString, tableInt ); 128 OSQLResultItem item( tableString, tableInt );
119 qu->items.append( item ); 129 qu->items.append( item );
120 130
121 return ((Query*)voi)->driver->handleCallBack( argc, 131 return ((Query*)voi)->driver->handleCallBack( argc,
122 argv, 132 argv,
123 columns ); 133 columns );
124 134
125 135
126} 136}