Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Nieprawidłowy sposób zamieszczania danych w bazie VB .NET

janek1111 30 Kwi 2013 19:45 1395 6
  • #1 30 Kwi 2013 19:45
    janek1111
    Poziom 13  

    Witam

    Mój ostatni problem polega na tym, że dane jakie umieszczam w bazie danych są nie po kolei tak jak mam je ułożone w listboxie albo w pliku. Zadaniem pisanego programu jest właśnie importowanie danych z ww. źródeł do bazy. W projekcie bazy jest kolumna z autonumeracją dzięki czemu po jej sortowaniu (w accesie) kolejność danych wraca do normy. (Jeśli chodzi o autonumerację i przypisane do niej dane to po użyciu niżej podanego kodu daje w kolumnie liczby np. od nr 1-100, które są ok, później pojawiają się liczby w zakresie od 150-200 i dalej od 101-149 - choć te powinny być w logicznym szeregu.) I teraz pytanie, dlaczego dane w bazie są zamieszczane w ten sposób? Jest to wynik niepoprawnego kodu, czy też jest to kwestia ustawień?

    Poniżej przedstawiam użyty kod:

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    0 6
  • #2 30 Kwi 2013 20:41
    wiesniak
    Poziom 31  

    Bazy danych nie gwarantują kolejności przechowywania/zwracania danych jeśli nie określisz odpowiedniego porządku w zapytaniu pobierającym. Tabele bazy powinieneś traktować jak zbiory, a nie jako listy.

    PS. Używanie goto jest mocno niezalecane - użyj odpowiednich pętli.

    0
  • #3 30 Kwi 2013 21:41
    janek1111
    Poziom 13  

    Czyli kolejność danych w wierszach mojej bazy jest prawidłowa? W sumie jestem amatorem programistą i postaram się popracować na loopami... Dzięki za rady. :D

    0
  • #4 01 Maj 2013 10:35
    markonedj
    Poziom 22  

    Tak, zauważ, że jak dodasz do bazy taki zestaw danych:

    Kod: div
    Zaloguj się, aby zobaczyć kod


    Następnie:
    Kod: div
    Zaloguj się, aby zobaczyć kod


    To wynikowy zestaw danych w tabeli jest:
    Kod: div
    Zaloguj się, aby zobaczyć kod


    Jak napisał @wiesniak od Ciebie zależy w zapytaniu którym pobierasz dane, kolejność sortowania do tego służy klauzula
    Kod: sql
    Zaloguj się, aby zobaczyć kod


    Czyli
    Kod: sql
    Zaloguj się, aby zobaczyć kod

    spowoduje posortowanie danych wdg Id osoby.

    0
  • #5 01 Maj 2013 16:37
    janek1111
    Poziom 13  

    Jeśli chodzi o dane to rozumiem, ale co z autonumeracją? W bazie też może "iść" nie po kolei?

    0
  • #6 02 Maj 2013 16:39
    markonedj
    Poziom 22  

    Tak i nie, zależy co rozumiesz przez pojęcie nie po kolei ? Czy dla Ciebie:

    Kod: div
    Zaloguj się, aby zobaczyć kod

    jest nie po kolei.
    Generalnie silnik bazy danych liczy ilość wstawionych wierszy i pamięta zawsze nr ostatniego rekordu i inkrementuje go przy każdej operacji wstawiania nowego rekordu. Zauważ, że jeżeli wstawiasz wiersz o id= 6 potem następny o id = 7 i go usuwasz i wstawiasz kolejny rekord, to id tego kolejnego rekordu wyniesie 8 (nie 7) i będzie dziura w autonumeracji - brak id = 7:
    Kod: div
    Zaloguj się, aby zobaczyć kod

    i wszystko jest w porządku.
    Autonumeracja służy do jednoznacznego identyfikowania rekordu w tabeli.

    0
  • #7 02 Maj 2013 18:38
    janek1111
    Poziom 13  

    No właśnie baza tworzona jest od podstaw i nie ma tu miejsca usuwanie rekordów, a pomimo to autonumeracja wygląda tak:

    Kod: div
    Zaloguj się, aby zobaczyć kod


    I to w właśnie mnie irytuje...

    0