К сожалению, являюсь абсолютным новичком в области баз данных и, возможно, не с того начинаю, но попробовал написать пару строчек(большей частью примеры из шлее) для работы с oracle.
int main (int argc, char ** argv)
{
QCoreApplication app(argc, argv);
app.addLibraryPath("C:\Instant_client");;
QSqlDatabase base = QSqlDatabase::addDatabase("QOCI");
base.setDatabaseName("XE");
base.setUserName("michael");
base.setHostName("192.168.0.100");
base.setPassword("password");
if(!base.open()) qDebug() << "Cannot connect oracle!\n";
else qDebug() << "Connected!\n";
QSqlQuery query(base);
QString ins_str = "SELECT * FROM addressbook;";
//query.prepare(ins_str);
if(query.exec(ins_str)) qDebug() << "Successful SELECT!\n";
else qDebug() << "Failed SELECT!\n";
QSqlRecord rec = query.record();
int cell;
QString name;
while(query.next())
{
cell = query.value(rec.indexOf("cell")).toInt();
name = query.value(rec.indexOf("name")).toString();
qDebug() << cell << " " << name << "\n";
}
qDebug() << base.lastError();
return 0;
}
Имею oracle 11g express, также instant client. Qoci подключился. К базе вроде как подключен, но селект не выполняется, впрочем как и create table. lastError() ошибок не выдал. Явно делаю какую-то ерунду, но не могу понять где.
Через sqlplus command line создал таблицу с двумя полями, забил её парой значений, закомитил и хотел бы вывести в qt. Своему логину выдал необходимые права.
Если возможно хотелось бы услышать как я должен поступить по порядку, включая самые элементарные вещи.
Ну и пара глупых вопросов:
Достаточно ли просто создать подключение как в коде для работы с парой таблиц? Или необходимо открывать что-то дополнительно?
При создании таблиц с sql command line oracle они автоматически сохраняются на жестком диске?
Когда установил сервер бд, то практически ничего не задавал, listener и tnsnames сгенерированы автоматически, мне нужно добавлять свои сервисы и указывать, например, global_bdname? Или я могу пользоваться теми, что по умолчанию?
Надеюсь на помощь. Спасибо.