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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Проблемка с плагином MySQL НУЖНА ПОМОЩЬ  (Прочитано 9187 раз)
NOs
Гость
« : Август 25, 2011, 10:55 »

В общем проблема в следующем -> собираю плагин под мускул все отлично проходит софтина конектится к БД все отображает но вот редактирование нивкакую не работает через QTableView+QSqlTableModel вот не добавляет записи и не радактирует никак это все происходит на платформе Windows(тут же поднять мускульный сервак) думал проблема в версии мускула поэтому пересобирал с MySQL 4.0 MySQL 5.0 MySQL 5.1 проблема та же но вот какая странность на линухе Ubuntu 10.04 все работает отлично значит смею предположить проблема все таки в драйвере да еще чуть не забыл в sqlbrowser'e тоже самое таже хрень с добавлением ) Qt 4.7  Windows 7   
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 25, 2011, 11:03 »

Может у пользователя нет прав?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
NOs
Гость
« Ответ #2 : Август 25, 2011, 11:05 »

права есть))с Ubunt'ы под этим же пользователем к этому же серваку все ок)
http://www.prog.org.ru/topic_18527_0.html - тут советуют зависимости поглядеть откуда libmysql.дергается ))тож не помогло))
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Август 25, 2011, 11:06 »

Если подключается, значит с драйвером все нормально. Проверь еще раз права и как коннектишься.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
NOs
Гость
« Ответ #4 : Август 25, 2011, 11:10 »

вот так коннект происходит

Код
C++ (Qt)
dbWork::dbWork(QString host,QString user,QString passwd)
{
    QSqlError err = addConnection("QMYSQL","srv",host,user,passwd,3306);
   Dialog dd;
 
   if (err.type() != QSqlError::NoError)
dd.warningMessage(tr("An error occurred while opening the connection: ") + err.text());
 }
 
 
 
 
QSqlError dbWork::addConnection(const QString &driver, const QString &dbName, const QString &host,const QString &user, const QString &passwd, int port)
{
   static int cCount = 0;
 
   QSqlError err;
   db = QSqlDatabase::addDatabase(driver, QString("Browser%1").arg(++cCount));
   db.setDatabaseName(dbName);
   db.setHostName(host);
   db.setPort(port);
   if (!db.open(user, passwd)) {
       err = db.lastError();
       db = QSqlDatabase();
       QSqlDatabase::removeDatabase(QString("Browser%1").arg(cCount));
   }
 
 
   return err;
 
}
 
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Август 25, 2011, 11:15 »

А черезQSqlQuery можно данные изменить? Если нет, то какая ошибка?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
NOs
Гость
« Ответ #6 : Август 25, 2011, 11:17 »

Да прямым запросом работает
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Август 25, 2011, 11:20 »

Покажи тогда как создаешь модель, вьюху и как подключаешь модель к вьюхе.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
NOs
Гость
« Ответ #8 : Август 25, 2011, 11:25 »

Код
C++ (Qt)
void Browser::showTable(const QString &t)
{
 
 
   QSqlRelationalTableModel * model = new QSqlRelationalTableModel(table,db->db);
       model->setEditStrategy(QSqlTableModel::OnRowChange);
   model->setTable(t);
 
   model->setRelation(6, QSqlRelation("users", "id", "name"));
   model->setRelation(8, QSqlRelation("status", "id", "name"));
 
   if(this->enterDialog->userAccess=="1") model->setFilter("relTblAl_6.name='"+this->enterDialog->userName+"'");
   model->select();
 
 
   if (model->lastError().type() != QSqlError::NoError)
       emit statusMessage(model->lastError().text());
 
 
 
   table->setModel(model);
   table->setItemDelegate(new QSqlRelationalDelegate(table));
   //FtpUploadDelegate *itD=;
   table->setItemDelegateForColumn(12,new FtpUploadDelegate(table));
   table->setSortingEnabled(true);
   table->setGridStyle(Qt::DashLine);
   table->setColumnHidden(0, true);
   if(this->enterDialog->userAccess=="1"){
       table->setColumnHidden(6, true);
       table->setColumnHidden(8, true);
 
   }
 
 
   table->resizeColumnsToContents();
   //table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
   table->setEditTriggers(QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed);
 
   connect(table->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)),this, SLOT(currentChanged()));
   table->setEditTriggers(QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed);
  // connect(table->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)),this, SLOT(currentChanged()));
       connect(table->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)),model, SLOT(submit()));
       connect(table->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),model, SLOT(submit()));
 
       if(this->enterDialog->userAccess=="3") table->setEditTriggers(QAbstractItemView::NoEditTriggers);
 
 
   updateActions();
}
 
 
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Август 25, 2011, 11:27 »

Не, по QSqlRelationalTableModel я ничего сказать не могу, так как не юзал его. Грустный
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
NOs
Гость
« Ответ #10 : Август 25, 2011, 11:28 »

Таже ошибка в QSqlModel в примере sqlbrowser
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #11 : Август 25, 2011, 11:29 »

QSqlQueryModel - read only.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
NOs
Гость
« Ответ #12 : Август 25, 2011, 11:33 »

QSqlQueryModel - read only.
То бешь она не умеет в мускул писать или как??не понял в Линухе же пишет))
Записан
NOs
Гость
« Ответ #13 : Август 25, 2011, 11:35 »

Таже ошибка в QSqlModel в примере sqlbrowser
QSqlTableModel
Записан
NOs
Гость
« Ответ #14 : Август 25, 2011, 14:57 »

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


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