Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

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

hagop 21 Cze 2012 20:05 1560 3
  • #1 21 Cze 2012 20:05
    hagop
    Poziom 15  

    Witam

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


    Kod: cpp-qt
    Zaloguj się, aby zobaczyć kod


    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

    Kod: cpp-qt
    Zaloguj się, aby zobaczyć kod


    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ć.

    0 3
  • #2 13 Kwi 2018 12:57
    zkubinski
    Poziom 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 ?

    0
  • #3 13 Kwi 2018 14:21
    JacekCz
    Poziom 36  

    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

    0
  • #4 13 Kwi 2018 15:47
    zkubinski
    Poziom 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

    0