• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Połączenie z bazą MySql przez C++

Object Storage Arubacloud
0 głosów
765 wizyt
pytanie zadane 8 października 2016 w C i C++ przez Shiro Stary wyjadacz (10,300 p.)
zamknięte 9 października 2016 przez Shiro

Witam!

Postanowiłem się nauczyć pisać aplikacje, które łączą się z bazą danych. Używam kursu strefa kursów i tam robią to tak:

	private: System::Void Button_Click(System::Object^  sender, System::EventArgs^  e) {
		String^ config = L"datasource=mysql.hostinger.pl;port=3306;username=u153102307_test;password=haslo";
		MySqlConnection^ connect = gcnew MySqlConnection(config);
		MySqlCommand^ ask = gcnew MySqlCommand("SELECT * FROM pytania WHERE rok=2007", connect);
		MySqlDataReader^ readed;

		try{
			connect -> Open();
			readed = ask -> ExecuteReader();

			while (readed->Read()){
				TextBox->Text += (readed->GetInt16(0)) + "\r\n";
			}

		}
		catch (Exception^ ErrorMessage){
			MessageBox::Show(ErrorMessage -> Message);
		}

	}

Po napisaniu i odpaleniu okazuje się że jest to ewidentny błąd połączenia "Unable to connect to any of the specified MySQL host" Sprawdzałem kilka razy i dane są ok jedynie martwi mnie że nie podałem nazwy bazy, aczkolwiek w kursie nawet o tym nie wspomnieli. Czy ktoś mógłby mnie oświecić co robię źle. Będę niezmiernie wdzięczny.

Pozdrawiam

komentarz zamknięcia: Problem rozwiązany!
komentarz 8 października 2016 przez DragonCoder Nałogowiec (36,500 p.)

A ja znalazlem:

#include <stdio.h>
#include "mysql/mysql.h"

int main() {
    MYSQL mysql;

    if(mysql_init(&mysql)==NULL) {
        printf("\nBlad inicjalizacji\n");
        return 0;
    }

    mysql_real_connect(&mysql,"localhost","user","pass","dbname",0,NULL,0);

    printf("Wersja klienta: %s",mysql_get_client_info());
    printf("\nWersja serwera: %s",mysql_get_server_info(&mysql));
    mysql_close(&mysql);
    return 1;
}

 

komentarz 8 października 2016 przez Shiro Stary wyjadacz (10,300 p.)
Mogę prosić o źródło ?
komentarz 8 października 2016 przez Shiro Stary wyjadacz (10,300 p.)
To jak sądzę jest konsola, a masz okno VS?
komentarz 8 października 2016 przez DragonCoder Nałogowiec (36,500 p.)
komentarz 8 października 2016 przez Shiro Stary wyjadacz (10,300 p.)
Dlaczego w tym moim nie jest podawana nazwa bazy ? Nie rozumiem tego .. Niestety nie umiem twojego kodu zaimplementować ;/

Czy umie ktoś naprawić mój kod?
komentarz 8 października 2016 przez DragonCoder Nałogowiec (36,500 p.)
Sproboj zainplementowac nazwe... moze to pomoze, bo samo odniesienie nie wiadomo do jakiej bazy nic Ci nie da
komentarz 8 października 2016 przez Shiro Stary wyjadacz (10,300 p.)
No próbowałem odwołać się do databasename oraz dataname ale niestety nic. Jednak to im działało .. WTH ?

1 odpowiedź

+1 głos
odpowiedź 8 października 2016 przez syguts Bywalec (2,200 p.)
wybrane 9 października 2016 przez Shiro
 
Najlepsza

Jeżeli korzystasz z lokalnej bazy danych w mysql'u zamien swojego connection string na:

String^ config = L"server=localhost;user=root;database=world;port=3306;password=******;";

Oczywiście w miejsca user=***, database=****, password=*** wstawiasz swoje ustawienia.

komentarz 8 października 2016 przez Shiro Stary wyjadacz (10,300 p.)
Chciałbym dokonać połączenia z bazą w Internecie nie lokalnie (chyba) tak dla pewności baza z którą chcę się połączyć znajduje się ma hostingu Hostinger. Jak podać nazwę bazy?
komentarz 9 października 2016 przez syguts Bywalec (2,200 p.)
String^ config = L"server=mysql.hostinger.pl;user=****;database=****;port=3306;password=******;";
komentarz 9 października 2016 przez Shiro Stary wyjadacz (10,300 p.)
Po wprowadzeniu zmian, uruchomieniu aplikacji i wywołaniu funkcji pojawia się następujący komunikat:

"Unable to connect to any of the specified MySQL hosts."

Czyli chyba dalej problem z połączeniem.
komentarz 9 października 2016 przez syguts Bywalec (2,200 p.)

Spróbuj jeszcze tak: 

string config = "server=mysql.hostinger.pl;user=****;database=****;port=3306;password=******;";

Jeżeli chodzi o samego connection string'a to wg. dokumentacji jest on poprawny https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-connection.html

Jezeli dalej nie pomogło to sprawdz te możliwości

1. jesteś pewny że dany serwer istnieje tzn jest dalej aktywny - jezeli robisz kurs ze strefy kursów to niekoniecznie serwer na którym oni to w kursie pokazywali jest dalej aktywny ?

2. Jezeli tak to czy jestes pewien ze taka baza danych tam jest ?

3. Czy napewno podajesz poprawne username i password ?

komentarz 9 października 2016 przez Shiro Stary wyjadacz (10,300 p.)

No cóż po ponownej próbie nadal ten sam komunikat. Dlatego założyłem baze na cba.pl jednak znowu ten sam błąd. Wklejam niżej całą funkcję dane do bazy są poprawne. Wydaje mi się że powinienem móc się zalogować gdyż przez phpmyadmin jestem w stanie .. 

private: System::Void Button_Click(System::Object^  sender, System::EventArgs^  e) {
		//String^ config = L"datasource=mysql.hostinger.pl;port=3306;username=u153102307_test;password=zvxfJrETP9";
		//String^ config = L"server=mysql.hostinger.pl;user=u153102307_test;database=u153102307_test;port=3306;password=joyb1WdHiO;";
		//String^ config = "server=mysql.hostinger.pl;user=u153102307_test;database=u153102307_test;port=3306;password=YaW1Zn4lPs;";
		String^ config = L"server=mysql.cba.pl;user=shirobachi;database=shirobachi;port=3306;password=zvxfJrETP9;";

		MySqlConnection^ connect = gcnew MySqlConnection(config);
		MySqlCommand^ ask = gcnew MySqlCommand("SELECT id FROM `pytania`", connect);
		MySqlDataReader^ readed;

		try{
			connect -> Open();
			readed = ask -> ExecuteReader();

			while (readed->Read()){
				TextBox->Text += (readed->GetInt16(0)) + "\r\n";
			}

		}
		catch (Exception^ ErrorMessage){
			MessageBox::Show(ErrorMessage -> Message);
		}

	}

Już nie wiem co mogę robić źle ;(

komentarz 9 października 2016 przez syguts Bywalec (2,200 p.)
To jeszcze jedno upewnij sie ze twoj dostawca czy na hostinger, czy to na cba udostępnia zdalene logowanie się.

Z tego co sie oriętuję to większość darmowych kont nie udostępnia zdalnego logowania się, (no chyba ze masz platne)
komentarz 9 października 2016 przez Shiro Stary wyjadacz (10,300 p.)
Tak masz rację to był powód przez który nie mogłem się połączyć założyłem bazę w środowisku testowym db4free.net i udało mi się połączyć ;)

Dzięki za pomoc!

Podobne pytania

0 głosów
1 odpowiedź 554 wizyt
pytanie zadane 19 lipca 2019 w PHP przez Bartosz Pawlak Początkujący (370 p.)
0 głosów
2 odpowiedzi 464 wizyt
pytanie zadane 23 sierpnia 2016 w PHP przez Piotr Czarnecki Nowicjusz (200 p.)
+1 głos
3 odpowiedzi 1,651 wizyt
pytanie zadane 20 czerwca 2016 w PHP przez lukasz_m Obywatel (1,380 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...