Menu / szukaj

Reset indeksu tabeli w SQL

Dziś potrzebowałem zrobić bardzo nietypową operację – zresetować indeks w tabeli w MS SQLu. I szczerze mówiąc nie sądziłem, że robi się to tak prosto. W tym celu należy użyć komendy:

DBCC CHECKIDENT (nazwa_tabeli, reseed, ostatni_indeks)

W komendzie podajemy nazwę tabeli, w której chcemy zresetować indeks oraz numer ostatniego indeksu w tabeli. Jeżeli chce się aby automatycznie generowane numery zaczynały się od 1 to należy użyć tego polecenia w następujący sposób:

DBCC CHECKIDENT (nazwa_tabeli, reseed, 0)

Należy pamiętać, że użycie tej komendy może spowodować błąd, w sytuacji, gdy ustalimy pierwszą wartość poniżej wartości użytych już w tabeli.

Snippety

Ostatnio odkryłem na nowo funkcjonalność definiowania własnym szablonów kodu. Funkcjonalność ta jest bardzo często nie wykorzystywana przez programistów, ale potrafi zdziałać cuda. W pisaniu aplikacji biznesowej zawsze przychodzi taki moment, że trzeba napisać kod służący do zapisywania danych do bazy, jak równię ich odczytywania.

W takim przypadku 90% kodu jest taka sama. Po pierwsze odczytujemy numer kolumny, w której przechowywane są dane w np. SQLDataReader. A następnie budujemy na podstawie danych obiekty. W trakcie odczytu danych z bazy należy oprogramować działanie w sytuacji gdy wystąpi null. I tu najczęściej sprawdza się czy w kolumnie odczytywanej występuje wartość null. Jeśli tak to podstawia się jakąś domyślną. Jeśli nie ma nulla to odczytuje się wartość z bazy.

Czytaj dalej

SerializableDictionary

Dzisiejszego dnia potrzebowałem użyć serializacji XML dla klasy Dictionary. Bardzo się zdziwiłem gdy okazało się, że klasa ta nie wspiera tego rodzaju serializacji. Wydawałoby się, że zapis danych w formacie XML jest dzisiaj już standardem, ale okazuje się, że jednak nie wszędzie. Stosując podstawową zasadę programisty po co pisać coś co ktoś inny już napisał uruchomiłem Google i zacząłem szukać rozwiązania. Udało mi się znaleźć kilka przykładów rozwiązania tego problemu, ale każde z nich miało jakiś drobny błąd, który powodował, że słownik nie działał tak jak powinien. Czytaj dalej

Productivity Power Tools – z czym to się je

Dzisiejszy wpis chciałem poświęcić dodatkowi do Visual Studio, bez którego uważam, że nie da się pracować. Osoby, które go nie używały nie wiedzą co tracą. Tym dodatkiem jest Productivity Power Tools. Jest on darmowy i można go pobrać ze strony http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef.

Czytaj dalej

MTS 2010 – moje przemyślenia

W ubiegłym tygodniu miała miejsce konferencja MTS 2010. Był to mój drugi wyjazd na MTS i szczerze mówiąc jestem lekko nim rozczarowany. Jeżeli mam go porównać do zeszłorocznego to wypada on zdecydowanie gorzej. Przede wszystkim mam trochę żal do organizatorów. Wydaje mi się, że ten MTS zatracił trochę swój charakter. Rok temu miałem odczucie, że trafiłem do jednej wielkiej rodziny, jeśli można to tak nazwać. Był czas na wszystko. Widać było duże zainteresowanie. Szczególnie jeśli widziało się sale pełne osób siedzących na schodach. W tym roku było inaczej. Było znacznie mniej czasu – przynajmniej w moim odczuciu. Pomiędzy sesjami biegało się z sali do sali w obawie przed tym, aby nie zamknięto drzwi przed nosem. Czytaj dalej

Sprawdzanie wersji Excela

W aplikacjach biznesowych bardzo często występuje funkcjonalność importu / eksportu danych z / do Excela. Jednym ze sposobów pobierania danych z Excela jest zastosowanie OLE DB jako dostawcy danych. Nie jest to może rozwiązanie najbardziej optymalne, ale czasami nie ma możliwości wpływu na jego wybór. W celu skorzystanie z tego sposobu należy zdefiniować łańcuch połączenia. I tu pojawia się problem ponieważ aby ten sposób zadziałał musi być zainstalowany Excel. Dodatkowo definicja łańcucha połączenia zależy od wersji Excela zainstalowanej na komputerze. Oba te warunki wymuszają sprawdzenie tego przed próbą pobrania danych z Excela. Czytaj dalej

Parallel.For – wielowątkowość nigdy nie była tak łatwa

W ostatniej wersji C# pojawiła się możliwość zrównoleglenia obliczeń w bardzo prosty sposób. Pętlę:

for (int n = 0; n <  8; n++)
{
   Console.WriteLine("Normal - iteracja {0} wątek {1}", n,
     Thread.CurrentThread.ManagedThreadId);
}&#91;/code&#93;
<p style="text-align: justify;">można zastąpić następującą konstrukcją:
Parallel.For(0, 8, i =>
{
   Console.WriteLine("Parallel - iteracja {0} wątek {1}", i,
      Thread.CurrentThread.ManagedThreadId);
});

Czytaj dalej

Hello World

Witaj! Mój pierwszy post na tym blogu zacznę w sposób tradycyjny. Każdy programista rozpoczynał swoją przygodę z programowaniem od programu o nazwie „Hello World”. Takie program nic wielkiego nie robi – wyświetla tylko napis na ekranie „Hello World”. Z drugiej strony program ten działa, co jest też dużym osiągnięciem. Czytaj dalej