crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QtSql + Firebird
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 9.11.2008, 22:25
 
Цитата(hd_qt @ 9.11.2008, 23:08) *
Не должно быть реакции на регистр букв. или я не прав?!
вобще в птице есть нюанс насчет регистра, зависит от диалекта БД, если:
SET SQL DIALECT 3;, то при записи имени идентификатора в кавычках, регистр учитывается, если без кавычек, то не учитывается, для совместимости со стрыми БД.

может быть в Qt, можно задавать эти параметры через
void QSqlDatabase::setConnectOptions ( const QString & options = QString() )
но я не проверял.

Я подозреваю что происходило следующее, после твоего запроса
Цитата(hd_qt @ 7.11.2008, 0:49) *
model.setQuery(QSqlQuery("select * from person;"));
, где ты идентификатор (имя таблица) не брал в кавычки, регистр символов не учитывался, а вот тут:
Цитата(hd_qt @ 7.11.2008, 0:49) *
window.setWindowTitle("Table");
Qt, видимо, обрамляет идентификатор в кавычки.
hd_qt Дата 9.11.2008, 21:01
 
Цитата(ViGOur @ 9.11.2008, 20:54) *
А ты в этом обсалютно уверен? :)

нет :blush2:
Я спутал с FireBird. :)
ViGOur Дата 9.11.2008, 20:54
 
Цитата(hd_qt @ 9.11.2008, 20:08) *
Не должно быть реакции на регистр букв.
А ты в этом обсалютно уверен? :)
hd_qt Дата 9.11.2008, 20:08
 
Цитата(Litkevich Yuriy @ 7.11.2008, 22:20) *
hd_qt, доработай свой пример

Хорошо, доработал. Вот результат:
Starting /home/hd/qtcreator-0.9/my_project/sql/sql
Database:  QSqlDatabase(driver=""QIBASE"", database=""mydb"", host=""localhost"", port=-1, user=""sysdba"", open=true)
Table list:
     ("PERSON", "IAMGOOD")
Set table status:  QSqlError(-1, "", "")
Select status:  QSqlError(-204, "Could not prepare statement", "Undefined name")

Что то мне это ни о чем не говорит :mellow:


Цитата(molchanoviv @ 7.11.2008, 23:04) *
hd_qt, а у тебя драйвер то установлен?

С использованием QSqlQueryModel у меня все работает. Может ли это быть при не установленном драйвере?!

Братцы! Как такое может быть?!
model->setTable("PERSON");
и все заработало))))
Не должно быть реакции на регистр букв. или я не прав?!
molchanoviv Дата 7.11.2008, 23:04
  hd_qt, а у тебя драйвер то установлен?
Litkevich Yuriy Дата 7.11.2008, 22:20
  hd_qt, доработай свой пример, после
Цитата(hd_qt @ 5.11.2008, 1:02) *
QSqlTableModel *model;
model = new QSqlTableModel(&app, db);

qDebug() << "Database: " << model->database();    
qDebug() << "Table list:\n"
        << "\t" << model->database().tables();

и
Цитата(hd_qt @ 5.11.2008, 1:02) *
model->setTable("person");
qDebug() << "Set table status: " model->lastError();

Цитата(hd_qt @ 5.11.2008, 1:02) *
model->select();
добавь:
qDebug() << "Select status: " << model->lastError();

незубудь в файл проекта добавить:
CONFIG += console debug
hd_qt Дата 6.11.2008, 21:49
  Заработало вот так вот:

#include <QtGui>
#include <QtSql>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE");
    db.setHostName("localhost");
    db.setDatabaseName("mydb");
    db.setUserName("sysdba");
    db.setPassword("******");

    if (!db.open()) {
        QMessageBox::critical(0, qApp->tr("Cannot open database"),
            qApp->tr("Unable to establish a database connection.\n"
                     "This example needs SQLite support. Please read "
                     "the Qt SQL driver documentation for information how "
                     "to build it.\n\n"
                     "Click Cancel to exit."), QMessageBox::Cancel);
        return 1;
    }


    QSqlQuery query;
    query.exec("create table person (id int primary key, "
               "firstname varchar(20), lastname varchar(20))");
    query.exec("insert into person values(101, 'Danny', 'Young')");
    query.exec("insert into person values(102, 'Christine', 'Holand')");
    query.exec("insert into person values(103, 'Lars', 'Gordon')");
    query.exec("insert into person values(104, 'Roberto', 'Robitaille')");
    query.exec("insert into person values(105, 'Maria', 'Papadopoulos')");

    QSqlQueryModel model;
    model.setQuery(QSqlQuery("select * from person;"));

    QTableView view;
    view.setModel(&model);

    QHBoxLayout layout;
    layout.addWidget(&view);

    QWidget window;
    window.setWindowTitle("Table");
    window.setLayout(&layout);
    window.show();

    return app.exec();
}


т.е. с использованием QSqlQueryModel, а с QSqlTableModel нехочет. пока... :)
hd_qt Дата 6.11.2008, 21:06
  Ничего он в консоль не выводит :(
Мог ли бы кто-нить прислать простенький "работающий" пример использующий драйвер QIBASE с отображением в QTableView?
Или все таки указать мне мою ошибку.
Litkevich Yuriy Дата 5.11.2008, 11:06
 
Цитата(hd_qt @ 5.11.2008, 12:37) *
А вот этот пример не хочет ничего делать((
что-то у меня было подобное на этапе освоения Qt+БД вещь была банальная.

Ты консоль прицепи в ней явно увидишь что не так.
hd_qt Дата 5.11.2008, 9:37
 
Цитата(Litkevich Yuriy @ 4.11.2008, 23:13) *
надо было все оставить как есть, только поменять драйвер и имя БД, а ты все в один файл.

Делал и так (переделал для того, что бы код вам предоставить). QTableView отображает только заголовок (поля таблицы БД), а содержимое нет.

Цитата(Litkevich Yuriy @ 4.11.2008, 23:13) *
это касяк, а вообще каталог demos есть? Это стандартный пример у тролей, они его всем рекомендуют для проверки работы с БД и доступности драйвера.

Есть. Нашел этот браузер))) он правильно все показывает и отображает все мои таблицы БД)))))
А вот этот пример не хочет ничего делать((
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 20.4.2024, 1:14