Autor: Podczas pracy nad przyszłymi elementami Desktop Info doszedłem do momentu, w którym przydało by się mieć schemat pliku xml czyli xsd. O ile w moim przypadku stworzenie takiego schematu nie powinno nastręczać problemu (plik jest bardzo prosty) dla kogoś kto płynnie włada xsd-ami to mi niestety by zajęło trochę czasu, żeby poprzypominać sobie konstrukcję. Wprawdzie Visual Studio bardzo przyjemnie umila ten proces przez podpowiadanie składni i kolejnych elementów to jednak istnieje szybsza metoda. M...
Bazy danych i XML 5188 dni, 5 minut temu 105 źrodło rozwiń
To ostatni, przynajmniej na razie post o NHibernate. Jest on podsumowaniem wszystkich moich wysiłków w kierunku poznania podstaw tego ORMa. Wcześniejsze etapy prac przedstawiłem w postach o mapowaniach NHibernate'a oraz zarządzaniu sesjami. Zmiany w klasie SessionManager W porównaniu do klasy przedstawionej w poprzednim poście musiałem wprowadzić niewielkie zmiany. Zdecydowałem się jednak zrobić ją klasą statyczną oraz przeniosłem funkcję MakeTransaction do głównej klasy dostępu do danych, oto jej a...
Bazy danych i XML 5190 dni, 11 godzin, 58 minut temu 141 źrodło rozwiń
Wszystkie dotychczas omawiane przeze mnie elementy ADO.NET były wprowadzeniem do przedstawienia klasy SqlDataAdapter. Klasa ta jest, można powiedzieć, opakowaniem zawierającym omawiane elementy, co sprawia, że jest ona szczególnie istotna z punktu widzenia łatwego zarządzania danymi pochodzącymi z bazy. Wreszcie klasa ta powinna być szczególnie interesująca dla osób programujących w ASP.NET. Znany z tej technolog...
Bazy danych i XML 5190 dni, 11 godzin, 58 minut temu 88 źrodło rozwiń
Sesje w NHibernate są kluczowymi obiektami, spośród wszystkich klas NHibernate'a to właśnie do nich najczęściej się odwołujemy. Od tworzenia i zwalniania sesji zależy prawidłowe działanie programu. Dlatego też istotne jest, aby odpowiednio wszystko poukładać, a jeszcze dobrze by było, aby korzystanie z NHibernate'a nie straciło przez to na wygodzie.
Bazy danych i XML 5190 dni, 11 godzin, 58 minut temu 136 źrodło rozwiń
autor: W tym temacie zdecydowałem się poruszyć zagadnienie wstawiania danych do bazy z wykorzystaniem obiektu typu SqlCommand. Początkowo opis miał zawierać również opis wykorzystania SqlDataAdapter, ale temat zrobiłby się wtedy zbyt obszerny jak na jeden post. Dodatkowo poruszona zostanie kwestia zapytań z parametrami oraz wywyoływania procedur składowanych. W poprzednich odsłonach pokazałem jak wykorzyst...
Bazy danych i XML 5190 dni, 21 godzin, 20 minut temu 85 źrodło rozwiń
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 5193 dni, 1 godzinę, 43 minuty temu 79 źrodło 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 5194 dni, 10 godzin, 29 minut temu 132 źrodło 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 5194 dni, 15 godzin, 57 minut temu 77 źrodło 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 5197 dni, 4 minuty temu 71 źrodło 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 5197 dni, 4 minuty temu 91 źrodło 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 5197 dni, 11 godzin, 26 minut temu 81 źrodło 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 5198 dni, 14 godzin, 12 minut temu 48 źrodło 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 5199 dni, 23 godziny, 28 minut temu 52 źrodło 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 5200 dni, 14 godzin, 57 minut temu 252 źrodło 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 5201 dni, 3 godziny, 47 minut temu 65 źrodło 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 5209 dni, 20 godzin, 49 minut temu 70 źrodło 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 5214 dni, 17 godzin, 27 minut temu 100 źrodło 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 5219 dni, 12 godzin, 51 minut temu 19 źrodło 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 5236 dni, 18 godzin, 17 minut temu 275 źrodło 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 5239 dni, 14 godzin, 17 minut temu 41 źrodło rozwiń