Autor: Do dalszej pracy nad projektem niezbędna będzie poprawnie zaprojektowana tabela. W tym momencie projekt całej bazy, aczkolwiek przydatny, nie jest niezbędny. Przed utworzeniem bazy dla swojej aplikacji chciałbym najpierw poszerzyć swoją wiedzę z zakresu modelowania danych. Do dalszych rozważań, pojedyncza tabela (a właściwie dwie ze względu na powiązanie ich), której projekt przedstawię w niniejszym poście, b...
Bazy danych i XML 2788 dni, 9 godzin, 22 minuty temu 74 rozwiń
Autor: Po całym tygodniu szarpanego walczenia z NHibernate'm zdecydowałem się zrobić wstępny projekt bazy danych i odpowiednio go zmapować do wykorzystania w aplikacji. Model bazy Na początek zakładam nie dużą ilość informacji do przechowywania w bazie, dlatego też jej model nie może być bardzo skomplikowany. Graficzna reprezentacja modelu została stworzona w programie MySQL Workbench (nie wiem czy robiłem coś źle, czy też provider System.Data.SQLite nie działa jeszcze zbyt dobrze jeśli chodzi o twor...
Bazy danych i XML 2789 dni, 18 godzin, 8 minut temu 126 rozwiń
W poprzednich postach omówiłem wykorzystanie metody ExecuteReader() wywoływanej na rzecz obiektu typu SqlCommand, która to zwracała obiekt typu SqlDataReader. Dysponowanie takim obiektem pozwala na analizę wyników zwróconych przez zapytanie. Kolejne dane z SqlDataReader’a odczytywane są wierszami, co sugeruje, że metoda ExecuteReader() powinna być stosowana wtedy, gdy chcemy pobrać z bazy danych wiel...
Bazy danych i XML 2789 dni, 23 godziny, 36 minut temu 72 rozwiń
W poprzednich dwóch odsłonach informacje pobrane z bazy danych wyświetlane były na wyjściu diagnostycznym. Nadszedł czas na przedstawienie bardziej praktycznego rozwiązania, które wymaga interakcji ze strony użytkownika. W tym celu wykorzystana zostanie kontrolka ASP.NET, jaką jest CheckBoxList. W przedstawionym przeze mnie przykładzie taka lista zapełniana jest opcjami pochodzącymi z przygotowanej bazy dany...
Bazy danych i XML 2792 dni, 7 godzin, 43 minuty temu 67 rozwiń
Autor: Dziś postanowiłem troszeczkę opisać bardzo uproszczony model logiki związanej ścisłe z forum czyli encje takie jak Kategoria forum, Forum, Temat, Post. Oprócz tego opisze parę kosmetycznych. Logika związana z forum Forum będzie składało się z kategorii. Dzielą one całe forum na części związane ze sobą tematycznie. Każda kategoria możne posiadać wiele forów. W skład forów wchodzą tematy które zaś maja wiele postów. Aktualnie modele są bardzo pros...
Bazy danych i XML 2792 dni, 7 godzin, 43 minuty temu 78 rozwiń
W kolejnej odsłonie zagadnień dotyczących ADO.NET chciałbym przedstawić proces pobierania danych z bazy. Na potrzeby omówienia tego zagadnienia wykorzystana została baza danych o nazwie ShoppingAppDb, która będzie służyć w nieodległej przyszłości jako główna baza dla tworzonej przeze mnie aplikacji. W nawiązaniu do mojego poprzedniego posta, o zarządzaniu użytkownikami z poziomu ASP.NET, również w tej bazie danych prawa db_owner przyznane zostały użytkownikowi o nazwie AspNetUser. Hasło dla tego użytkow...
Bazy danych i XML 2792 dni, 19 godzin, 5 minut temu 80 rozwiń
Dla przypomnienia, poprzednia część rozważań na temat zapytań do bazy danych zakończyła się na wywołaniu zapytania komendą: SqlDataReader reader = cmd.ExecuteReader(); wyniki natomiast odbierane były za pomocą odwołania: reader["Id"]; przy czym należy pamiętać o zamknięciu strumienia, aby nie blokować otwartego połączenia: reader.Close(); lub wykorzystaniu bloku using, która na zakończenie tego właśnie bloku zwalnia wszelkie zasoby, zatem powinien również zamknąć strumień, jakim jest reader. Warto jes...
Bazy danych i XML 2793 dni, 21 godzin, 51 minut temu 47 rozwiń
W .NET mamy do dyspozycji funkcję Trim (string.Trim) służącą do usuwania pustych znaków (spacji) zarówno przed jak i po stringu. Przykład:string text=" jakiś tekst "; trimmedText=text.Trim(); // teraz trimmedText równy jest "jakiś tekst" Jak widać spację zostały usunięte. W T-SQL nie mamy dokładnie takiej samej funkcji ale łatwo uzyskać identyczny efekt za pomocą LTRIM oraz RTRIM:LTRIM(RTRIM(kolumna)) Najpierw usuwamy wszystkie znaki z prawej strony a potem dopiero z lewej. Można również napi...
Bazy danych i XML 2795 dni, 7 godzin, 7 minut temu 51 rozwiń
Autor: Dotychczas myślałem, że LINQ dopuszcza stosowanie zapytań tylko i wyłącznie w formie SQL-podobnej, tzn: view sourceprint?1 var zmienna = from x in y select x; Doczytałem dzisiaj jednak, że jest to jedna z dwóch metod umożliwiających konstruowanie zapytań do bazy danych. Ta znana mi metoda to tzw. składnia zapytań. Druga, którą kojarzyłem, ale nie wiedziałem, że jest alternatywą, to tzw. składnia lambda. Żeby nie zanudzać teorią przedstawiam poniżej przykład tego samego zapytania napisanego na d...
Bazy danych i XML 2795 dni, 22 godziny, 36 minut temu 243 rozwiń
Dzisiaj kilka słów na temat testowania kodu wykorzystującego NHibernate/Fluent NHibernate. Po stworzeniu modelu, mapowań Fluent NHibernate i wygenerowaniu bazy danych czas sprawdzić, czy ma to szansę działać. Będę testował kod mapowań, ale nic nie stoi na przeszkodzie, żeby wykorzystać ten sam kod (tworzenie sesji i budowanie schematu bazy danych) później, przy testowaniu kodu obiektów typu DAO/Repository (wykorzystujących ISession i/lub IStatelessSession z NHibernate). Żeby przeprowadzić testy będę potr...
Bazy danych i XML 2796 dni, 11 godzin, 26 minut temu 63 rozwiń
Dzisiaj bardzo króciutki post. Do tabeli dodałem computed column (wartość liczona na podstawie innych kolumn). Formuła obliczająca wartość wyglądała następująco:VotesFor / TotalVoteCount Chciałem po prostu dodać kolumnę, która liczy procent oddanych głosów aby potem móc stworzyć indeks po tej kolumnie. W przypadku jednak gdy TotalVoteCount wynosi 0 pojawił się wyjątek Divide by Zero. Na szczęście funkcja NULLIF rozwiązała problem:VotesFor / NULLIF(TotalVoteCount,0) W sytuacji gdy TotalVoteCount rów...
Bazy danych i XML 2805 dni, 4 godziny, 28 minut temu 69 rozwiń
Niedawno miałem przyjemność uczestniczyć w pierwszym spotkaniu Krakowskim spotkaniu inicjatywy NoSQL Summer. Zainteresowała mnie, przede wszystkim, forma spotkań — dyskusje dotyczące przeczytanych “lektur obowiązkowych”. Skojarzyło mi się bardziej z dyskusyjnym klubem filmowym, niż typową technologiczną juzergrupą. Postanowiłem się więc wybrać. Nie żałowałem. Organizacji krakowskich spotkań podjął się Adam Pohorecki. Dzięki temu org...
Bazy danych i XML 2810 dni, 1 godzinę, 6 minut temu 99 rozwiń
Dziś pisząc pewien pakiet integracyjny (integration services) napotkałem na następujący błąd:Error: SSIS Error Code DTSECANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "Excel Connection Manager 1" failed with error code 0xC00F9304. There may be error messages posted before this with more information on why the AcquireConnection method call failed. Stworzony pakiet składał się z Excel Source. Po odpaleniu wystąpił błąd właśnie na tym elemencie...
Bazy danych i XML 2814 dni, 20 godzin, 30 minut temu 18 rozwiń
Autor: Miałem ostatnio okazję tworzyć małą aplikacyjkę korzystającą z Entity Framework jako technologii dostępu do danych przechowywanych z MySQL. Miało być banalnie: ściągamy oficjalny "konektor", instalujemy i wszystko śmiga jak pszczółka maja na polanie pełnej bzu. Oczywiście gdyby tak było to pisanie tego posta nie miałoby sensu:). Dwa problemy....
Bazy danych i XML 2832 dni, 1 godzinę, 57 minut temu 271 rozwiń
W poprzednim poście wyjaśniłem do czego służy klauzula WITH ROLLUP. Dzisiaj zajmiemy się bardzo podobnym mechanizmem – WITH CUBE. Najlepiej wyjaśnić to znów na przykładzie tabeli. Załóżmy, że mamy poniższe zapytanie:select StoreName,ProductType,sum(Number) from SoldProducts GROUPBY StoreName,ProductType W wyniku wykonania otrzymamy:StoreNameProductTypeSumaSklepA komputery1SklepAspożywka3SklepBkomputery4SklepBspożywka6 Jak wiemy z poprzedniego wpisu WITH ROLLUP umożliwi uzyskanie wyników hierarchiczn...
Bazy danych i XML 2834 dni, 21 godzin, 56 minut temu 40 rozwiń
Operator WITH ROLLUP używa się w połączeniu z GROUPBY. Czasami istnieje potrzeba grupowania wyników po dwóch kolumnach. Wyobraźmy sobie, że mamy tabelę lub widok zawierający listę sprzedanych produktów. Będziemy mieli zatem takie kolumny jak “nazwa produktu”, “nazwa sklepu w którym został sprzedaży produkt” oraz “typ produktu”. Przykładowe zapytanie wyglądałoby więc następująco:select StoreName,ProductType,sum(Number) from SoldProducts GROUPBY StoreName,ProductType Zapytanie zwróci produkty pogrupowa...
Bazy danych i XML 2837 dni, 12 godzin temu 50 rozwiń
W tym artykule przedstawione zostanie jak można przenieść informacje z DataSet'a (układ i zawartość) do bazy danych opartej o Microsoft SQL Server (również w wersji Express). W tym celu zostaną wykorzystane SQLServer Management Objects (SMO) i SqlBulkCopy. Ze wspomnianym problem spotkałem się już jakiś czas temu (przeczytajcie na devPytaniach: „Jak z DataSet’a wytworzyć bazę danych?”), ale dopiero teraz znalazłem chwilę czasu, aby rozwiązanie opisać.
Bazy danych i XML 2845 dni, 11 godzin, 20 minut temu 97 rozwiń
OUTPUT pozwala na zwrócenie wierszy d0danych, zaktualizowanych lub usuniętych za pomocą komend INSERT, UPDATE i DELETE. Zwrócony wynik możemy wyświetlić po prostu na ekranie lub wstawić do innej tabeli. Wyobraźmy sobie, że mamy tabele Employee oraz EmployeeLog zawierającą logi. W celu wykonania loga możemy: INSERTINTO Employee (IDEMPLOYEE,FirstName,LastName) OUTPUT getdate(),'wstawiono wiersz',inserted.IDEMPLOYEE INTO EmployeeLog values(1,'Jakies imie,','Jakies nazwisko'); Równoważny efekt można osi...
Bazy danych i XML 2850 dni, 17 godzin, 40 minut temu 44 rozwiń
W SQL Server 2005 wprowadzono operator Apply. Służy on do łączenia tabeli z funkcją zwracającą również tabelę (table-valued function). Po lewej stronie operatora mamy więc zwykłą tabelę (np. "Employees”) a po prawej jakąś funkcję (np. “GetContactInfo”). Apply wywoła GetContactInfo dla każdego wiersza z Employee. W T-SQL występują dwie odmiany operatora: CROSS APLY i OUTER APPLY. Pierwszy z nich złączy wyłącznie te wiersze dla których funkcja zwraca jakiś wynik. Z kolei OUTER APPLY złączy wiersze zastęp...
Bazy danych i XML 2854 dni, 9 godzin, 38 minut temu 71 rozwiń
Transakcje to fajna sprawa. Polubiłem je od pierwszego użycia. Zostałem oczarowany przez ich magiczną właściwość — zwalniają z myślenia o spójności danych. Cool, przecież nie lubię myśleć. Jeszcze bardziej byłem oczarowany, gdy odkryłem transakcje rozproszone. To dopiero jazda. Mogę coś “zapdejtować” na tej bazie, na tej drugiej bazie i jeszcze wrzucić komunikat do kolejki MSMQ i wszystko wykona się transakcyjnie — w całości lub wcale. Od dłuższego czasu zaczynam jednak wątpić w trans...
Bazy danych i XML 2857 dni, 4 godziny, 7 minut temu 89 rozwiń
Polecamy
Nadchodzące wydarzenia
Najaktywniejsi

