Wypełnienie TextBoxa danymi z MySQL

Wypełnienie TextBoxa danymi z MySQL
Auror
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 5 lat
  • Postów:15
0

Witam

Mam następujący problem. Chciałbym pobrać z bazy danych MySQL z jednej tabeli imie, nazwisko i umieścić w TextBox-ie. W bazie danych mam procedurę pobierającą dane o następującej strukturze:

Kopiuj
CREATE DEFINER=`test`@`%` PROCEDURE `pracownik`(idUzytkownika INT)
BEGIN
	SELECT CONCAT(pracownicy.imie, ' ', pracownicy.nazwisko)
		FROM pracownicy
			INNER JOIN uzytkownicy 
				ON pracownicy.idPrac = uzytkownicy.idUzytk
				AND uzytkownicy.idUzytk = idUzytkownika;
END

Poniżej funkcja z której korzystam:

Kopiuj
Void pracownik(int idUzytkownika, System::Windows::Forms::TextBox^ pole, String^ konfiguracja)
{
	MySqlConnection^ polaczenie = gcnew MySqlConnection(konfiguracja);
	polaczenie->Open();

	MySqlCommand^ zapytanie = gcnew MySqlCommand("CALL pracownik(" + idUzytkownika + ")", polaczenie);

	try
	{
		
		MySqlDataReader^ dane = zapytanie->ExecuteReader();
		dane->Read();

		if (dane->HasRows)
		{
			pole->Text = ???;
		}


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

	polaczenie->Close();

}

Nie wiem jak to zapisać, żeby zwróciło mi textboxie "Imie Nazwisko". Procedura sama w sobie działa bez problemu. Testowana w workbenchu.

AK
Otaguj to prawidłowym językiem. To NIE JEST C++
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:minuta
1

Wystarczy podłubać w dokumentacji
https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-sql-command.html
https://dev.mysql.com/doc/dev/connector-net/8.0/html/M_MySql_Data_MySqlClient_MySqlDataReader_GetString.htm

Kopiuj
if (dane->Read()) {
    pole->Text = dane->GetString(0);
}

FYI to jest źle napisane, bo masz pomieszane cześć UI z bazą danych i logiką biznesową. Niby działa, ale utrzymanie tego to będzie koszmar.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22
Auror
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 5 lat
  • Postów:15
0

Dziękuję działa. Co do źle napisanego, to się zgadzam, ale na razie się uczę (stąd takie trywialne problemy). Chętnie posłucham wszelkich rad.

grzesiek51114
grzesiek51114
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 4 lata
  • Postów:2442
1
Kopiuj
MySqlCommand^ zapytanie = gcnew MySqlCommand("CALL pracownik(" + idUzytkownika + ")", polaczenie);

Takie rzeczy należy załatwiać za pomocą parametrów, bo wejdzie Ci to w nawyk i skończy się na SQL Injection.

edytowany 1x, ostatnio: grzesiek51114
Auror
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 5 lat
  • Postów:15
0

Na pewno będę się stosował. Jak pisałem dopiero się uczę. Przerabiam kurs wideo Aplikacje w VC++, Visual Studio C++ Aplikacje Bazodanowa, Pasja Informatyki - C++, książki Pana Gręgosza (zresztą bardzo miły człowiek, odpisałam mi na maila jak miałem wątpliwości co do treści zawartej w jego książce) i parę innych, ale na razie jestem amatorem. Dziękuję za rady.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.