X


[ Pobierz całość w formacie PDF ]
.Wska�nikten jest zwracany podobnie jak w funkcji mysql_store_result, natomiast nienast�puje faktyczne pobranie danych do zestawu wynikowego, a tylko jegoinicjacja i ustawienie w gotowo�ci do przyj�cia danych.[[[ramka]]]Aby naprawd� pobra� dane, trzeba powtarza� wywo�ania mysql_fetch_row tak jakpoprzednio, a� do pobrania wszystkich danych.Je�eli przy wywo�aniu funkcjimysql_use_result wyst�pi b��d, to nast�puj�ce po tym pobieranie danych zostaniezak�ócone.[[[koniec ramki]]]Co si� stanie, je�eli u�yjemy funkcji mysql_use_result? Potencjalnie zyskujemywi�ksz� swobod�, poniewa� mniej obci��amy sie� i program klienta, ale istniejetak�e wada takiego sposobu pobierania danych: przy wywo�aniu mysql_use_resultnie mo�emy skorzysta� z funkcji mysql_num_rows, mysql_data_seek, mysql_row_seeki mysql_row_tell.W rzeczywisto�ci nie jest to do ko�ca prawd�, poniewa� mo�emywywo�a� mysql_num_rows, lecz nie otrzymamy wtedy liczby dost�pnych wierszy a�do momentu pobrania ostatniego z nich za pomoc� funkcji mysql_fetch_result.Faktycznie wi�c nie przyda si� to do niczego.Powi�kszamy tak�e opó�nienie miedzy ��daniami pobrania wiersza, poniewa� zaka�dym razem musi on by� przesy�any przez sie�.Dodatkowy problem mo�e stwarza�mo�liwo�� wyst�pienia b��du sieci podczas utrzymywania otwartego po��czenia zbaz� danych, zanim wszystkie dane zostan� pobrane.Nie b�dziemy wówczas mielirzeczywistego dost�pu do danych, poniewa� nie s� one przechowywane lokalnie.Mamy tak�e du�e korzy�ci: wyrównujemy obci��enie sieci i znacznie zmniejszamypotencjalnie du�e zapotrzebowanie na pami�� (ang.storage overhead) w programieklienta.Przy du�ych zestawach danych prawie zawsze preferuje si� pobieraniewiersza po wierszu za pomoc� funkcji mysql_use_result.Zmiana w programie select1.c polegaj�ca na u�yciu funkcji mysql_use_result jest�atwa do przeprowadzenia.Otrzymujemy w ten sposób program select2.c, w którymzaznaczyli�my zmienione wiersze:if (res) {printf("SELECT error: %s\n", mysql_error(&my_connection));} else {res_ptr = mysql_use_result(&my_connection);if (res_ptr) {while ((sqlrow = mysql_fetch_row(res_ptr))) {printf("Fetched data.\n");}if (mysql_errno(&my_connection)) {printf("Retrieve error: %s\n", mysql_error(&my_connection));}}mysql_free_result(res_ptr);}Zwró�my uwag� na to, �e nie jest tu znana liczba wierszy pobranych bezpo�redniopo otrzymaniu wyniku.Oprócz tego u�yto tutaj wcze�niej stosowanej metodyobs�ugi b��dów polegaj�cej na sprawdzaniu warto�ci zwracanej przezmysql_errno(&my_connection).Pisz�c program wykorzystuj�cy funkcj�mysql_store_result i maj�c zamiar zmieni� j� w przysz�o�ci na funkcj�mysql_use_result, lepiej od razu wprowadzi� stosowne zmiany.Dla pewno�ci mo�natak�e sprawdza� warto�ci zwracane przez wszystkie funkcje.Przetwarzanie zwróconych danychSamo pobieranie danych nie ma wi�kszego sensu, je�eli nie b�dziemy z niminiczego robi�.Podobnie jak w bazie PostgreSQL, tutaj równie� rozró�nia si� dwarodzaje danych:Rzeczywista informacja pobrana z bazy danych.Informacja na temat danych, czyli tzw.metadane (ang.metadata).Najpierw zobaczymy, jak mo�na odtwarza� i wy�wietla� dane, a nast�pnie zajmiemysi� sposobami okre�lania nazw kolumn i innych informacji o danych.W nowszych wersjach MySQL dost�pna jest funkcja mysql_field_client, któraodnosi si� do obiektu po��czenia i zwraca liczb� pól w zestawie wynikowym:unsigned int mysql_field_count(MYSQL *connection);Ta funkcja mo�e by� tak�e wykorzystana do bardziej ogólnego przetwarzania, np.do okre�lania, czy przy wywo�aniu mysql_store_result wyst�pi� b��d.Je�elimysql_store_result zwróci NULL, ale funkcja mysql_field_count zwraca liczb�wi�ksz� od zera, to mo�emy by� pewni, �e w zestawie wynikowym s� jakie� dane,chocia� wyst�pi� b��d przy ich odtwarzaniu.Je�eli jednak funkcjamysql_field_count zwraca zero, to nie ma �adnych kolumn do pobrania, a zatempróba zachowania wyniku nie uda si�.Prawdopodobnie taka metoda b�dzie cz�ciej stosowana wówczas, gdy polecenie SQLnie jest znane z góry albo gdy programista chce utworzy� modu� przeznaczony doca�kowicie ogólnego przetwarzania zapyta�.W programach wykorzystuj�cych starsze wersje MySQL mo�na spotka� wywo�aniafunkcji mysql_num_fields [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • listy-do-eda.opx.pl
  • Drogi użytkowniku!

    W trosce o komfort korzystania z naszego serwisu chcemy dostarczać Ci coraz lepsze usługi. By móc to robić prosimy, abyś wyraził zgodę na dopasowanie treści marketingowych do Twoich zachowań w serwisie. Zgoda ta pozwoli nam częściowo finansować rozwój świadczonych usług.

    Pamiętaj, że dbamy o Twoją prywatność. Nie zwiększamy zakresu naszych uprawnień bez Twojej zgody. Zadbamy również o bezpieczeństwo Twoich danych. Wyrażoną zgodę możesz cofnąć w każdej chwili.

     Tak, zgadzam się na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerów w celu dopasowania treści do moich potrzeb. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

     Tak, zgadzam się na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerów w celu personalizowania wyświetlanych mi reklam i dostosowania do mnie prezentowanych treści marketingowych. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

    Wyrażenie powyższych zgód jest dobrowolne i możesz je w dowolnym momencie wycofać poprzez opcję: "Twoje zgody", dostępnej w prawym, dolnym rogu strony lub poprzez usunięcie "cookies" w swojej przeglądarce dla powyżej strony, z tym, że wycofanie zgody nie będzie miało wpływu na zgodność z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.