Russian Qt Forum

Qt => Базы данных => Тема начата: bob от Ноябрь 01, 2005, 21:09



Название: Qt, MySQL дальнейшее развитие
Отправлено: bob от Ноябрь 01, 2005, 21:09
Ситуация следующая:
Первые три записи добавлены в ТБД непосредственно из shell MySQL после команды SET NAMES utf8.
Последняя добавлена из программы написанной на Qt с переданным вБД параметром SET NAMES utf8.
При установке SET NAMES utf8 в shell MySQL первые три записи
отображаются правильно, последняя отображается нечитабельными
символами (кодировку менял на все которые только поддерживает MySQL).
При просмотре ТБД из программы написанной на Qt ни одна запись не
отображается правильно. В заголовке окна выведен текст для того чтобы быть уверенным, что локаль установлена в ср1251.
Все вышеописанное запускается под управлением WindowsXP.
Код:

#include "vwdb.h"
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QTextStream>
#include <QTranslator>


ViewDB::ViewDB(QWidget *parent): QWidget(parent)
{
  setupUi(this);

  connectionDB();

  model = new QSqlTableModel(this);
  model->setTable("TestTable");
  model->setEditStrategy(QSqlTableModel::OnManualSubmit);
  model->select();

  model->setHeaderData(0, Qt::Horizontal, tr("Идентификатор"));
  model->setHeaderData(1, Qt::Horizontal, tr("Статус"));

  tvwView->setModel(model);
}


void ViewDB::connectionDB()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("TestDB");
    db.setUserName("root");
    db.setPassword("rootpass");

    db.open();

    QSqlQuery query;
    query.exec("SET NAMES utf8");
    query.exec("SELECT* FROM TestTable");    
    query.next();

    codec=QTextCodec::codecForName("utf8");
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForTr(codec);

    query.prepare("INSERT INTO TestTable (id, status) "
                  "VALUES (:id, :status)");
    query.bindValue(":id", 40);
    query.bindValue(":status", "Гость");
    query.exec();

    setWindowTitle("Текст в ср1251");
}


Название: Qt, MySQL дальнейшее развитие
Отправлено: oktogen от Ноябрь 02, 2005, 14:46
Попробуй по
 этому  (http://prog.org.ru/forum/topic_2003.html) методу.


Название: Qt, MySQL дальнейшее развитие
Отправлено: Admin от Ноябрь 02, 2005, 15:29
чел создал новый топик, он уже отчаялся найти решение
и ему указали на его же топик

я уже выдохся, идей больше нет


Название: Qt, MySQL дальнейшее развитие
Отправлено: oktogen от Ноябрь 02, 2005, 15:39
Пардон, перепутал ветки .
Думал, что нашел лекарство , ан нет.
Попытался прикрутить к своему проекту ,ессесн,  не заработало.
Ситуевина у меня абсолютно такая же, только версия мускула 5(стоит на винде,пока что не пробовал на линухе)
Найду решение - выложу детали.