Dlaczego lubię kontener DockPanel? Ponieważ dobrze (intuicyjnie) współpracuje z kontrolką ScrollViewer, która dostarcza pionowych i poziomych pasków przewijania. Załóżmy, że główne okno naszej aplikacji zawiera listę (kontrolka ListView) z kilkuset wierszami. Wierszy jest na tyle dużo, że w danym momencie na ekranie widoczna jest tylko część z nich. Aby użytkownik mógł przewijać listę i zobaczyć wszystkie wiersze używamy kontrolki ScrollViewer ScrollViewer zachowa się jednak inaczej w...
Strona głównaUżytkownik
macko | użytkownik
Dzięki wykorzystaniu SMO (jeśli nie wiesz co to – przeczytaj wpis pt.:"Jak DataSet’a przenieść do MsSQL'a? (SQLServer Management Objects i SqlBulkCopy)") można w prosty sposób wykonywać wiele operacji na bazie danych Ms SQL. Jedną z takich operacji może być usuwanie elementów bazy danych. W większości przypadków wystarczy na wybranym elemencie z bazy danych wykonać proste Drop, jednak nie zawsze musi się to udać.Taki przypadek może mieć właśnie miejsce z tabelami. Załóżmy, że chcemy usunąć wybraną tabelę...
Bazy danych i XML 451 dni, 6 godzin, 29 minut temu 25 rozwiń
Autor: We wpisie pt.: "Jak DataSet’a przenieść do MsSQL'a? (SQLServer Management Objects i SqlBulkCopy)" przedstawiłem, jak można na podstawie DataSet'a stworzyć odpowiadającą mu bazę danych. Niestety nie wszystko zostało tam opisane i wykonane prawidłowo, o czym pisałem już we wpisie „Klucze obce, a relacje w DataSet'cie”. Kolejnym elementem, który wymaga dodania są ograniczenia (Constrains), a w szczególności ten wymuszający unikalność UniqueConstraint.Otóż tabela w DataSet'cie przechowuje informacje ...
Bazy danych i XML 452 dni, 17 godzin, 5 minut temu 32 rozwiń
Windows Azure oferuje trzy podstawowe mechanizmy przechowywania danych. Każdy z nich przeznaczony jest dla innego typu danych i każdy z nich oferuje inne możliwości. Dzisiaj skupimy się na niestandardowym zastosowaniu blobów, czyli pojemników na dane binarne. Jeśli nie wiecie czym są bloby, możecie zapoznać się z ich opisem tutaj. Problem Problem z jakim się dzisiaj zmierzymy znany jest wszystkim, którzy mieli do czynienia z aplikacją przechowującą pliki wgrywane przez użytkowników. Najwięcej kłopotu w t...
Programowanie rozproszone 452 dni, 17 godzin, 5 minut temu 32 rozwiń
We wpisie pt.: "Jak DataSet’a przenieść do MsSQL'a? (SQLServer Management Objects i SqlBulkCopy)" przedstawiłem, jak można na podstawie DataSet'a stworzyć odpowiadającą mu bazę danych. Niestety wkradł się tam pewien „brak”. Mianowicie część relacji pomiędzy tabelami zostało pominiętych – w wytworzonych tabelach nie zostały wykorzystane klucze obce. Otóż dla każdej tabeli (DataTable) w DataSet'cie dostępne są relacje typu dzieci (właściwość ChildRelations) i rodzice (właściwość ParentRelations). Relacje...
Bazy danych i XML 454 dni, 17 godzin temu 58 rozwiń
Autor: Kilka dni temu postanowiłem zainteresować się tematyką automatycznego generowania dokumentów PDF z poziomu języka C#. Rozpocząłem przeszukiwanie internetu w celu znalezienia gotowej biblioteki realizującej taki proces. W sieci prym wiedzie PDFsharp, który poza tworzeniem dokumentów w formacie PDF, pozwala także m.in. na generowanie wykresów, osadzanie grafik oraz czcionek. Specyfikację biblioteki, przykłady oraz FAQ znaleźć można na tej stronie. Zachęcony bogactwem możliwości postanowiłem sprawdz...
Zwykle zapisując do logów jakąś informację dobrze jest zachować pewne powiązanie pomiędzy następującymi po sobie czynnościami. Dobrym przykładem takiej sytuacji jest np. wywoływanie ApplicationEvent, wysyłanie maila, czy właściwie jakikolwiek proces składający się z więcej niż 1 kroku. Po co? A no po to, aby potem w pliku z logami móc wyfiltrować tylko te informacje które nas faktycznie interesują. Szczególnie w środowisku wielowątkowym (czyli właściwie... zawsze?) bez tego ciężko jest dojść OCB
Architektura 458 dni, 4 godziny, 22 minuty temu 102 rozwiń
Czas najwyższy rozwiązać zagadkę numerologiczną z poprzedniego wpisu :). Zacznijmy od krótkiego kodu KOD 1 (Wyjątek przechwycony) class SEH { publicstaticvoid Main(string[] args) { try { thrownew Exception(); } catch (Exception ex) { System.Diagnostics.Debugger.Log(0, "Test", "Błąd aplikacji .NET & SEH"); } } } Odpalamy WinDbg, ładujemy naszą aplikację i jedziemy: 0:000> sxe * 0:000> g ModLoad: 77dc0000 77e6c000 C:\WINDOWS\system32\ADVAPI32.dll ModLoad: 77e70000 77f02000 C:\WINDOW...
W komentarzu do poprzedniego posta („SMO: sprawdzanie dostępnych serwerów MS SQL i automatyczna konstrukcja ConnectionString”), Paweł Łukasik (Pawlos) zapytał, czy jest jakaś różnica pomiędzy ServerConnection a SqlConnectionStringBuilder jeśli chodzi o tworzenie connection stringa? Przyjrzyjmy się temu tematowi trochę bliżej.W ramach .Net Framework dostępna jest klasa System.Data.Common.DbConnectionStringBuilder, która jest bazową klasą dla innych klas specjalistycznych (dla konkretnego typu bazy danych...
Bazy danych i XML 459 dni, 10 godzin, 32 minuty temu 58 rozwiń
Autor: Jakiś czas temu, we wpisie związanym z SQLServer Management Objects (SMO), pod tytułem: „SMO i sprawdzanie, czy baza danych istnieje [PL]” otrzymałem komentarz, że warto wspomnieć o jeszcze innych możliwościach SMO, jak choćby listowanie instancji SQL Server: SmoApplication.EnumAvailableSqlServers(). W tym wpisie chciałbym właśnie wrócić do tego tematu.Otóż tak jak zostało to wspomniane statyczna funkcja SmoApplication.EnumAvailableSqlServers() potrafi dostarczyć listę instancji serwera Ms SQL. Mo...
Bazy danych i XML 471 dni, 16 godzin, 33 minuty temu 71 rozwiń
Wpisy na temat śledzenia i logowania w .NET pojawiały się już wcześniej na tym blogu (np. „Śledzenie i logowanie zdarzeń (tracing and logging) na platformie .NET (przykłady w oparciu o C#).” i „Śledzimy w .NET dalej (dzisiaj uruchomimy własny podsłuch)”). Mechanizm wykorzystania elementów platformy .NET, jak: TraceSource, TraceListener i innych związanych z nimi jest dość wygodny, tym bardziej, że są dostępne gotowe klasy typu TraceListener zapisujące w plikach logi przy pomocy XML-a lub w których każdy ...
Przyznam szczerze, że dotychczas z komunikacją między różnymi aplikacjami lub ich warstwami spotykałem się głownie w aspekcie usługowo-webowym. Taki scenariusz sprowadza się do takiego a nie innego wykorzystania webservice lub pochodnego ustrojstwa. Co jednak można zastosować jeżeli chcemy aby dwie nasze aplikacje miały możliwość pogadania ze sobą na lokalnej maszynie? Rozwiązań jest sporo albo i jeszcze więcej. Poczynając od SendMessage z Win32 API, współdzielonej pamięci, webservice, TCP, COM, DCOM n...
Programowanie rozproszone 474 dni, 10 godzin, 38 minut temu 154 rozwiń
Autor: Dzisiejszego pięknego i powtórnie zimowego dnia zaszła potrzeba stworzenia kontrolki, która miałaby dwa wzorce zawartości: nagłowek i ciało. Wszystko szło pięknie. Stworzyłem sobie kontenery do wzorców, odpowiednią kontrolke i wszystkie inne potrzebne rzeczy. Gdy jednak przyszło do wykorzystania okazało się, że kontrolki umieszczone wewnątrz wzorców nie mają odwołać w pliku designera, ani nie są dostępne „globalnie” na stronie. Jakby nie patrzeć całkiem normalne zachwoanie tego typu zwierza, do ja...
Czasami zdarzają się sytuacje, że pomimo usilnych prób nie możemy zreprodukować błędu u siebie na maszynie lokalnej. Musimy sprawdzić dlaczego nasza aplikacji źle działa na maszynie produkcyjnej. W tym wpisie postaram się przedstawić jakie narzędzia mamy do dyspozycji jeśli jeśli taka potrzeba zajdzie. Zobaczmy co jest zatem dostępne.Visual Studio Remote Debugging Pierwszą naszą opcją jest Remote debugging dostępny w VisualStudio. Wraz z zainstalowanym VS instalują nam się komponenty, które możemy wykorz...
Profilowanie aplikacji przy użyciu dotTrace Przyznam się, że nie miałem w planach poruszania tematu profilowania aplikacji jeszcze przez jakiś czas. Rozpoczęcie masowego importu danych ze strony sejmu do projektu Rankingu Sejmowego zmusiło mnie do zmiany planów. Po przerobieniu przez kilka godzin około 30% danych z ostatniej kadencji Sejmu (około 20 tysięcy plików HTML ważących razem 120 MB) zacząłem zastanawiać się czy dałoby się ten proces trochę przyspieszyć. Do badania wydajności kodu posłużyły mi d...
Czasami istnieje potrzeba sprawdzenia czy baza danych jest dostępna na serwerze Ms SQL Server. W tym celu można wykorzystać widok sys.databases, na którym można wykonać select'a i sprawdzić czy dana baza danych występuje na liście (np. „select * from sys.databases”). Zobaczmy jednak, jak to zrobić przy pomocy SMO.O SMO, czyli SqlServer Management Objects pisałem już wcześniej we wpisie dot. zagadnienia jak DataSet’a przenieść do MsSQL'a (z wykorzystaniem SQLServer Management Objects i SqlBulkCopy), więc ...
Bazy danych i XML 487 dni, 16 godzin, 46 minut temu 43 rozwiń
Używając Message Inspector możemy modyfikować wiadomości przychodzące i wychodzące zarówno po stronie serwera jak i klienta. Wystarczy zaimplementować dwa interfejsy: IClientMessageInspector oraz IDispatchMessageInspector. Ich definicja wygląda następująco:publicinterface IClientMessageInspector { void AfterReceiveReply(ref Message reply, object correlationState); object BeforeSendRequest(ref Message request, IClientChannel channel); } publicinterface IDispatchMessageInspector { object AfterR...
Programowanie rozproszone 488 dni, 2 godziny, 38 minut temu 39 rozwiń
Jakiś czas temu był na tym blogu wpis dotyczący GridView i TemplateField, czyli sposobu wygodniejszą wizualizację i edycję danych tabelarycznych. W ten sposób łatwo można zamienić skomplikowane numeryczne identyfikatory (pochodzące z kluczy obcych) na dropdown-listy przedstawiające dane z innych tabel. Jednak co się stanie, gdy nasza kolumna z identyfikatorami dopuszcza wartości puste (NULL)? Otóż pojawi się wtedy „błąd serwera w aplikacji ....”. Zobaczmy jak sobie można z tym poradzić.Załóżmy, że pierwo...
Autor: Kilka dni temu w poście Statystyka… zapowiedziałem, iż postaram się zaproponować kawałki kodu, które umożliwią włączenie statystyk dla zapytań LINQ to SQL. Zadanie okazało się trochę trudniejsze niż myślałem, ale udało się coś osiągnąć. Zobaczmy jak.Rozwiązanie Naïve Pierwsze co przychodzi na myśl to proste rozszerzenie obiektu DataContext o nasze metody. Mniej więcej tak: publicstaticclassDataContextExt { publicstatic T WithStatistics
Bazy danych i XML 495 dni, 1 godzinę, 39 minut temu 43 rozwiń
Jakiś czas temu pisałem na temat jak DataSet’a przenieść do MsSQL'a (z wykorzystaniem SQLServer Management Objects i SqlBulkCopy). W takim przypadku, gdy kolumna w tabeli w DataSet'cie ma ustawioną właściwość AutoIncrement, to należy w kolumnie w SQL serwerze ustawić Identity na true, oraz IdentityIncrement i IdentitySeed na odpowiednie im wartości (AutoIncrementStep i AutoIncrementSeed) pochodzącej ze źródłowej kolumny z tabeli z DataSet'a. Niestety w takim przypadku, podczas późniejszego ładowania dany...
Bazy danych i XML 495 dni, 1 godzinę, 39 minut temu 62 rozwiń
Polecamy
Ostatnio na blogu
Podsumowanie #5 - tydzień 2...
Najaktywniejsi
