blob: f6ee57421694a99982db32474097120d836855d7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
#include <iostream>
#include <string>
#include <qfileinfo.h>
#include <kdebug.h>
#include <kinstance.h>
#include <kexidb/drivermanager.h>
#include <kexidb/driver.h>
#include <kexidb/connection.h>
#include <kexidb/cursor.h>
#include <kexidb/parser/parser.h>
using namespace std;
QCString prgname;
int main(int argc, char **argv)
{
kdDebug() << "main()" << endl;
QFileInfo info=QFileInfo(argv[0]);
prgname = info.baseName().latin1();
KInstance instance( prgname );
if (argc<2) {
return 1;
}
QCString drv_name(argv[1]);
QCString db_name = QString(argv[2]).lower().latin1();
KexiDB::DriverManager manager; // = KexiDB::DriverManager::self();
QStringList names = manager.driverNames();
kdDebug() << "DRIVERS: " << endl;
for (QStringList::ConstIterator it = names.constBegin(); it != names.constEnd() ; ++it)
kdDebug() << *it << endl;
if (manager.error()) {
kdDebug() << manager.errorMsg() << endl;
return 1;
}
//get driver
KexiDB::Driver *driver = manager.driver(drv_name);
if (!driver || manager.error()) {
kdDebug() << manager.errorMsg() << endl;
return 1;
}
//connection data that can be later reused
KexiDB::ConnectionData conn_data;
conn_data.setFileName(db_name);
KexiDB::Connection *conn = driver->createConnection(conn_data);
if (!conn || driver->error()) {
kdDebug() << "error: " << driver->errorMsg() << endl;
return 1;
}
if (!conn->connect()) {
kdDebug() << "error: " << conn->errorMsg() << endl;
return 1;
}
if (!conn->useDatabase( db_name )) {
kdDebug() << "error: " << conn->errorMsg() << endl;
return 1;
}
KexiDB::Parser *parser = new KexiDB::Parser(conn);
std::string cmd;
while(cmd != "quit")
{
std::cout << "SQL> ";
getline(std::cin, cmd);
parser->parse(cmd.c_str());
switch(parser->operation())
{
case KexiDB::Parser::OP_Error:
kdDebug() << "***********************" << endl;
kdDebug() << "* error *" << endl;
kdDebug() << "***********************" << endl;
break;
case KexiDB::Parser::OP_CreateTable:
{
kdDebug() << "Schema of table: " << parser->table()->name() << endl;
parser->table()->debug();
break;
}
case KexiDB::Parser::OP_Select:
{
kdDebug() << "Select statement: " << endl;
KexiDB::QuerySchema *q = parser->query();
q->debug();
delete q;
break;
}
default:
kdDebug() << "main(): not implemented in main.cpp" << endl;
}
parser->clear();
}
return 0;
}
|