Czasami istnieje potrzeba reprezentacji drzewa za pomocą tabeli. Klasycznym przykładem jest hierarchia pracowników w firmie. Bardzo popularną reprezentacją jest:IDEMPLOYEE int, IDMANAGER int, Title nvarchar(50). IDEMPLYOEE jest oczywiście kluczem głównym, z kolei IDMANAGER stanowi klucz obcy wskazujący na IDEMPLOYEE. Przykład wypełnionej tabeli:IDEMPLOYEEID_MANAGERTitle1NULLProject Manager21Senior Software Developer32Junior Developer41Senior database developer Rozwiązanie jak najbardziej poprawne....
Bazy danych i XML 5113 dni, 8 godzin, 47 minut temu 63 źrodło rozwiń
Dzisiaj musiałem w LINQ TO SQL napisać zapytanie odpowiadające takiemu zapytaniu w T-SQL...
Bazy danych i XML 5115 dni, 18 godzin, 7 minut temu 71 źrodło rozwiń
Zamieszczam przykład zastosowania LINQ To SharePoint do pobierania, zapisywania, aktualizowania i usuwania danych z dwóch list powiązanych ze sobą lookup fieldem (relacja jeden do wielu).
Bazy danych i XML 5120 dni, 2 godziny, 55 minut temu 47 źrodło rozwiń
Dzisiaj coś z pogranicza horroru (będzie strasznie), sci-fi (będzie niesamowicie) i kina familijnego (będzie happy end). Czyli dlaczego warto używać transakcji NHibernate przy każdym wywołaniu metody Save(). Zaczęło się od prac nad statystykami. Po sporządzeniu planu wykonania 7 rodzajów statystyk przystąpiłem do realizacji pierwszych punktów. Zacząłem od napisania testów oraz repozytoriów do pobierania danych z bazy w celu wyliczenia statystyk. Metodyka pisania testów metod pobierających dane z bazy był...
Bazy danych i XML 5120 dni, 2 godziny, 55 minut temu 161 źrodło rozwiń
Silnik Sql Server posiada kilka metod do pobierania daty i czasu. Część z nich jest już przestarzała i nie powinno się z nich korzystać. SQL Server 2008 wprowadził kilka dodatkowych funkcji: SYSDATETIME, SYSDATETIMEOFFSET, SYSUTCDATETIME. Wszystkie one pobierają czas z dokładnością do 100 nanosekund. Aby przekonać się co dokładnie zwracają najlepiej wywołać je:select SYSDATETIME() as'SYSDATETIME',SYSDATETIMEOFFSET() 'SYSDATETIMEOFFSET', SYSUTCDATETIME() as'SYSUTCDATETIME'; Jak widać SYSDATETIEM zwraca ...
Bazy danych i XML 5120 dni, 21 godzin, 15 minut temu 40 źrodło rozwiń
Autor: Obiecałem, że jak tylko będę miał możliwość, zorganizuję konkurs T-SQL inspirowany cyklicznymi konkursami T-SQL Challenge. I słowa dotrzymuję :-)Dane wejściowe Dane są dwie tabele o strukturach, jak poniżej:Tabela dbo.Teams: TeamId TeamName 1 Poland 2...
Bazy danych i XML 5121 dni, 3 godziny, 45 minut temu 90 źrodło rozwiń
Prawdopodobnie wszyscy znają już klauzulę group by w zapytaniach SQL – nie stanowi żadnej rewelacji. Myślę jednak, że znacznie mniej popularniejszą klauzulą jest GROUPING SETS. Rozważmy następujące zapytanie: selectfrom Products GROUPBY ProductCategory unionallselectfrom Products GROUPBY ProductSubcategory Zapytanie zwróci wiersze pogrupowane po kategorii produktu oraz podkategorii. Należy podkreślić, że grupowania wykonywane są niezależnie od siebie i nie mają charakteru hierarchicznego (tak jak to b...
Bazy danych i XML 5127 dni, 9 godzin, 9 minut temu 32 źrodło rozwiń
We wpisie o LinqToXml pisałem jak można czytać z pliku XML. Co jednak z zapisywaniem? Otóż jest to równie łatwe. Znowu zaprzęgniemy do pracy Linq. Najpierw oczywiście otwieramy plik a następnie pozostaje stworzyć XDocument z zawartością. Zawartość możemy dodawać ręcznie albo (jak na przykładzie poniżej) wybrać elementy za pomoca Linq i zwrócić je w takiej postacji jakiej chcemy mieć je zapisane.
Bazy danych i XML 5128 dni, 8 godzin, 9 minut temu 75 źrodło rozwiń
Dzisiejszy post ma charakter raczej ciekawostki– w praktyce nic przydatnego nie wnosi:). Wiemy, że wartości NULL mają specjalne znaczenie – podstawowe operacje matematyczne zachowują się inaczej niż na zwykłych liczbach. Podobnie jest z porównywaniem NULL ponieważ służy do tego specjalny operator (IS NULL). Istnieje jednak w SQL Server zmienna, której ustawienie pozwala porównywać wartości NULL za pomocą klasycznych operatorów ‘==’. Rozważmy następujące zapytanie:select*from Persons WHERE FirstName isnul...
Bazy danych i XML 5129 dni, 25 minut temu 44 źrodło rozwiń
Czasami warto sprawdzić, czy wartości w podanych kolumnach zostały zmienione. Najłatwiejszym sposobem jest porównanie sumy kontrolnej. Jeśli stara wartość jest różna od aktualnej oznacza to, że któreś pole zostało zmienione. W T-SQL służy do tego funkcja CHECKSUMAGG:select CHECKSUMAGG(Credit) from Persons GROUPBY Persons Podobną funkcją jest CHECKSUM – liczy sumę kontrolną, jednak dla każdego wiersza a nie dla całych grup.Explore posts in the same categories:SQL Server This entry wa...
Bazy danych i XML 5132 dni, 2 godziny, 17 minut temu 25 źrodło rozwiń
Wyobraźmy sobie następująca sytuację. Implementujemy program do obsługi przetwórni win. Nie będą to takie wina, jakie możemy spotkać na codzień. Wina będą markowe, produkowane z prawdziwych winogron. Nie jabłek, nie gruszek, a właśnie winogron. Jak wiemy winogrona możemy spotkać powszechnie w dwóch odmianach – białe, oraz ciemne.
Bazy danych i XML 5132 dni, 4 godziny, 52 minuty temu 50 źrodło rozwiń
Do czego służy LinqToXml? Do prostego czytania XML-a. Możemy stosować składnię Linq i czytać w ten sposób pliki xml-owe. Ładnie i miło. Czyż nie jest to ładne? Zamiast (o zgrozo) ręcznie parsować plik lub uczyć się XPath-a można zaprzęgnąć Linq. Problem jaki przy tym wyszedł to taki paskudny komunikat: Could not find an implementation of the query pattern for source type ‘System.Collections.Generic.IEnumerable
Bazy danych i XML 5133 dni, 5 godzin, 43 minuty temu 19 źrodło rozwiń
W SQL Server istnieje kilka narzędzi pozwalających określić wydajność wykorzystywanych zapytań. Podstawowym i najbardziej chyba znanym jest SQL Server Profiler. Można go włączyć z poziomu Sql Server Management Studio (menu główne->Tools->Sql Server Profiler). Po uruchomieniu pojawi się okienko w którym można określić m.in. zdarzenia, które powinny być monitorowane. Następnie aby rozpocząć analizę należy wybrać Start Selected Trace (ikonka zielonej strzałki w ToolBar). Od tego momentu wszelkie zapytania ...
Bazy danych i XML 5134 dni, 4 godziny, 28 minut temu 61 źrodło rozwiń
Ostatnio mam szczęście do "dziwnych" błędów. Dwa dni temu pisałem o htmlfile: Access Denied. Przy okazji podziękowania dla Tomka i Procenta za wskazówki jak sobie z nim poradzić. Teraz natknąłem się na błąd z zupełnie innej beczki związany z komunikacją z bazą danych. Zadanie do wykonania: wywołać procedurę składowaną. Zabrałem się do tego jak zawsze czyli nawiązałem połączenie do bazy danych, utworzyłem DbCommand, dodałem parametry, ustawiłem wartości parametrów i wywołałem procedurę. Niestety tym razem...
Bazy danych i XML 5134 dni, 15 godzin, 38 minut temu 30 źrodło rozwiń
Kilka prostych kroków, które pozwolą nam na pierwszą interakcję z bazą danych przy pomocy Business Logic Toolkit!
Bazy danych i XML 5135 dni, 18 godzin, 27 minut temu 39 źrodło rozwiń
Ważnym problemem podczas wykonywania testów jednostkowych jest ich wzajemna niezależność. Zmiany wprowadzone w bazie danych przez jeden z testów nie powinny wpływać na wykonywanie się pozostałych testów. Jednym z rozwiązań było by usuwanie w każdym teście zmian które wykonuje on na bazie danych, ale jest to bardzo niewygodne...
Bazy danych i XML 5136 dni, 5 godzin, 38 minut temu 38 źrodło rozwiń
Często zdarza się, że mamy dwie takie same bazy: jedną lokalną do testów oraz drugą produkcyjną, umieszczoną na zdalnym hoście. Rozwijając aplikację, naturalne jest, że będziemy zmuszeni modyfikować bazę danych (dodanie nowych tabel, kolumn itp.). Wgrywając nową wersję na serwer łatwo zapomnieć o dokonanych zmianach na bazie. Na szczęście istnieją programy, które pozwolą nam zsynchronizować obydwie struktury. Jednym z nich jest dbForge Schema Compare for SQL Server. Po uruchomieniu programu i wybraniu op...
Bazy danych i XML 5136 dni, 5 godzin, 38 minut temu 66 źrodło rozwiń
W poprzedniej części dotyczącej obiektu SqlDataAdapter przedstawiłem ogólny zarys tego, czym jest ten obiekt, jak go utworzyć oraz jak za jego pomocą pobrać dane z bazy. Omówiłem też kilka jego podstawowych cech. W niniejszym poście postaram się przedstawić podstawowe zastosowanie obiektu typu SqlDataAdapter. Zacznijmy od przypomnienia tego, jak to było na początku. Do pobrania danych z bazy wykorzystywany...
Bazy danych i XML 5138 dni, 19 godzin, 25 minut temu 52 źrodło rozwiń
To już trzeci wpis z serii “Skryptowanie w SQL Server 2008″. Dwa poprzednie dostępne są tu:[PL] Skryptowanie w SQL Server 2008 – Obiekty proceduralne[PL] Skryptowanie w SQL Server 2008 – Proste typy danych użytkownika Tym razem przedstawiam sposób na skryptowanie kluczy obcych. Kiedy takie skryptowanie może się przydać? Na przykład wt...
Bazy danych i XML 5140 dni, 5 godzin, 3 minuty temu 42 źrodło rozwiń
Jeżeli chcesz pobawić się trochę danymi geograficznymi i raportami pokazującymi mapy w SQL Server 2008 R2, ten wpis jest specjalnie dla Ciebie. Kiedyś musiałem przygotować prezentację na temat danych przestrzennych i z tamtej prezentacji została mi baza danych Spatials, która w dwóch tabelach przechowu...
Bazy danych i XML 5140 dni, 8 godzin, 47 minut temu 120 źrodło rozwiń