Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[QT] Połączenie z bazą danych MySQL

hagop 21 Jun 2012 20:05 2025 3
  • #1
    hagop
    Level 15  
    Witam

    Od kilku dni usiłuje podłączyć się z bazą MySQL z mojej aplikacji, którą pisze w QT Creator.


    Code: cpp-qt
    Log in, to see the code


    Program zwraca błąd:
    Code:
    ster jest
    
    brak polaczenia -  QSqlError(0, "QODBC3: Unable to connect", "[Microsoft] [Meneder sterownikˇw ODBC] Nie mo┐na odnalečŠ nazwy črˇd│a danych, a nie ma podanego sterownika domyťlnego")





    Mój system to Win7 64bit, baza danych to MySQL 5.5.25. Nie wiem czy ma to znaczenie ale moje ip to 192.168.1.111 wpisane na sztywno. Z tego co widzę to baza danych jest na localhost:3306 bo po wpisaniu tego adresu dostaję jakieś krzaki. W mysqlworkbanch stworzyłem bazę o nazwie testowanie składającą się z 2 tabel. Próbowałem logować się na 2 sposoby (jeden zakomentowany) i zawsze dostaje ten sam błąd.

    Proszę o pomoc w skonfigurowaniu tego połączenia. W późniejszym czasie baza będzie znajdowała się gdzieś na serwerze zewnętrznym i jak to później skonfigurować poprawnie?


    ------------------------


    Próbowałem też logowania po DSN

    Code: cpp-qt
    Log in, to see the code


    w odbcad32.exe dodałem konto:

    [QT] Połączenie z bazą danych MySQL.

    Na obrazku widać że testowanie konta przebiega prawidłowo. Program po kompilacji wywala taki komunikat. Podejrzewam że może to być ta linia kodu:
    db.setHostName("192.168.1.111\\MySQL55"); nie wiem co innego mogę tu wstawić.
  • #2
    zkubinski
    Level 2  
    Widzę, że to stary post. Ale czy uporałeś się z problemem ? Bo na mój gust wybierasz niewłaściwy sterownik i po drugie czy baza danych zainstalowana jest lokalnie czy na jakimś serwerze w domu ?
  • #3
    JacekCz
    Level 39  
    Wstęp teoretyczny do driverów bazodanowych wyższego poziomu (JDBC w Javie, ADO i z tego segmentu)
    1. Sterownik do konkretnej bazy jest "gdzieś" znany dla głównego managera połączeń. Nie musi być "aktywowany", wystarczy że jest znany, czeka.
    2. Aplikacja zgłasza "zamówienie" na konkretne połączenie przez string połączeniowym (pogogglaj wiele materiałów nt "connection string" dla różnych platform)
    3. W stringu MUSI być coś charakterystycznego, do identyfikuje kontretny driver. Zdecydowanie port 3306 to za mało dla identyfikacji.
    4. Konkretnie ODBC może "być znane" przez wpis w konfiguracji systemu po nazwie.. Nie zagłębiając się, ma "jakby" dwa tryby poszukiwania sterownika.

    I teraz praktyka:
    Po adresie, hoście, kodowaniu stringa itd... ja bym nie wykrył, którego typu żądasz.
    Zarazem mówisz sprzecznie, jakbyś nieprawidłowo zarejestrował w Windows Panelu ODBC DataSource. Nazwa się nie powtarza
    bardzo mi pachnie Microsoft SQL-em (zwany MS-SQL, tylko jedna literka różnicy Do My-SQL, czasem jest mylone).
    Gdybym jak był autorem "bebechów" bym nieprawdłowo skierował się na MS-SQL.

    Oraz rada:
    ODBC to ostateczność (z kilku powodów, w tym oficjalnie podana przestarzałość), o ile dysponujemy szczegółowym (natywnym??? tak to się mówi po polsku) sterownikiem, a taki istnieje.
    http://doc.qt.io/qt-5/qsqldatabase.html

    Zarazem uchylam się od dokładnej wypowiedzi nt Qt, bo nie uprawiam. Ale mam 99% przekonania co do toku myślenia.
    EDIT: widzę, że stary wątek, pomyliłem z kolegą który współcześnie o coś podobnego pyta
  • #4
    zkubinski
    Level 2  
    Jeżeli kolega współcześnie czegoś takiego szuka, to pytaj i powiedz jaki ma problem, może uda mi się pomóc, bo akurat w tym siedzę - czyli bazy danych "Mariadb" i Qt do obsługi baz danych