[Qt] Przeniesienie programu z bazą danych na inny pc

0

Cześć, napisałem program obsługujący bazę danych, podczas jego startu wyskakuje okienko z polem do wpisania adresu hosta. Przeniosłem program na inny komputer wraz z QtCore4.dll, QtGui4.dll oraz dodatkowo z QtSql4.dll i qsqlmysql4.dll. Problem w tym, że po uruchomieniu wyskakuje komunikat "Driver not loaded". Problemem jest chyba wywolanie addDatabase, ale bez niego jest oczywiście to samo podczas próby logowania. Myślę, że brakuje jeszcze jakiś dll lub jakiś nagłówków, podam także kod konstruktora:

  db = QSqlDatabase::addDatabase("QMYSQL");

  hostName = new QLineEdit;
  hostName->setText("localhost");
  QLineEdit *userName = new QLineEdit;
  QLineEdit *userPass = new QLineEdit;
  QPushButton *login = new QPushButton(tr("Zaloguj"));
  connect(login,SIGNAL(clicked()),this,SLOT(connectToDatabase()));

  QFormLayout *layout = new QFormLayout;
  layout->addRow(new QLabel(tr("Host:")),hostName);
  layout->addRow(new QLabel(tr("Login:")),userName);
  layout->addRow(new QLabel(tr("Hasło:")),userPass);
  layout->addRow(login);
  setLayout(layout);

Oraz slotu connectToDatabase():

QSqlError err;
  db.setHostName(hostName->text());
  db.setDatabaseName("biblioteka");
  db.setUserName("root");
  db.setPassword("root");
  if(!db.open())
    err = db.lastError();
  if(err.type() != QSqlError::NoError) {
    QMessageBox::critical(this,tr("Błąd"),err.text());
    return;
  }
0

nie znam tematu, ale logicznie rozumujac obstawiam ze QtSql4.dll to jakies twory abstrakcyjne do ogolnej obslugi baz, qsqlmysql4.dll to implementacja tej abstarkcji dla mysql, ale dalej nie sadze ze implementowali niskopoziomowo laczeni z mysql, pewnie raczej obudowywuja standardowy sterownik mysql, wiec pewnie ptrzeba zainstalowac na tej drugiej maszynie takze sterownik do mysql (dostepny na stronie mysql)

0

Spróbuj w ten sposób:

db = new QSqlDatabase(QSqlDatabase::addDatabase("QMYSQL"));

Jeżeli nadal będą kłopoty to spróbuj wrzucić jeszcze libmySQL.dll do katalogu z aplikacją oraz qsqlmysql.dll do podkatalogu \sqldrivers w katalogu aplikacji.

Ten błąd może również wynikać z tego, że masz wywołanie addDatabase przed załadowaniem sterowników...

0

Dzięki AdamPL, teraz działa. Zastanawiam mnie jednak jeszcze jedna rzecz. W programie mam tabelę utworzoną z QTableView oraz QSQlQueryModel, kiedy za pomocą formularza dodaję coś do tabeli odświeżam model przez ponowne wywołanie zapytania. Całość odświeża się jednak tylko na komputerze na którym nastąpiło dodanie, na drugim komputerze widok pozostaje bez zmian. Nie bardzo wiem dlaczego tak się dzieje, czy można zrobić coś aby odświeżenie następowało na wszystkich komputerach w momencie dodania na którymkolwiek z nich pozycji do modelu?

1 użytkowników online, w tym zalogowanych: 0, gości: 1