Russian Qt Forum
Май 03, 2024, 11:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QBitArray записать в sql-запрос  (Прочитано 9478 раз)
chu
Гость
« Ответ #15 : Сентябрь 16, 2011, 15:15 »

А может попробовать приметно так:
Код
C++ (Qt)
   QSqlQuery query;
   query.exec(QString("SELECT bit FROM table WHERE id = 1"));
   if(query.next())
   {
       QBitArray bitArr = query.record().value("bit").toBitArray();
       ...
    }
 

У меня так работает. Только вместо BitArray у меня ByteArray, но по идее это не меняет сути.
По идее, не меняет, но с byteArray не работает
Записан
chu
Гость
« Ответ #16 : Сентябрь 16, 2011, 15:59 »

СУБД какая?

Для SQLite, например, можно сделать так:
Код
C++ (Qt)
Qvariant data = QVariant(/*QBitArray*/);
...
QByteArray buf = data.toByteArray();
....
 
 


Не работает. buf пустой
Записан
Rem Norton
Гость
« Ответ #17 : Сентябрь 16, 2011, 20:15 »

Код в студию пожалуйста. А то создается впечатление, что вопрошающий не пытается услышать ответы.

P.S. У меня вот тут: http://qt-apps.org/content/show.php/Electronic+Business+Assistant?content=110164 все замечателно работает. Можно скачать и убедиться. Что там может пойти не так (кроме ошибок в коде) я не знаю.
Записан
chu
Гость
« Ответ #18 : Сентябрь 16, 2011, 22:11 »

Код:
Код:
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setHostName("host");
    db.setDatabaseName("sqliteDB");
    db.open();

    QSqlQuery query;
    query.exec(QString("CREATE TABLE newTabel (id INT PRIMARY KEY, bitarr BINARY(200)) "));
    query.exec(QString("INSERT INTO newTabel VALUES(0, 010101010101111000001110101010101010) "));
    qDebug()<<query.lastError();

    query.exec(QString("SELECT bitarr FROM newTabel WHERE id=0"));
    if(query.first())
    {
        QBitArray bitArr = query.value(0).toBitArray();
        qDebug()<<bitArr;
        qDebug()<<bitArr.size();
    }
Дебаг:
Код:
Отладка запущена
QSqlError(-1, "", "")
QVariant(QBitArray, )
0
Отладка завершена
В sqliteman в поле bitarr:
Код:
1.0101010101111e+34
Записан
Rem Norton
Гость
« Ответ #19 : Сентябрь 16, 2011, 23:09 »

Ошибка вот тут:
Код:
query.exec(QString("CREATE TABLE newTabel (id INT PRIMARY KEY, bitarr BINARY(200)) "));
query.exec(QString("INSERT INTO newTabel VALUES(0, 010101010101111000001110101010101010) "));

Правильно так:
Код
C++ (Qt)
query.exec(QString("CREATE TABLE newTabel (id INT PRIMARY KEY, bitarr BLOB "));
query.exec(QString("INSERT INTO newTabel VALUES(0, X'555E0EAAA' ) "));
 

Как реализовать описано выше, ссылка на пример есть.


Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.163 секунд. Запросов: 20.