C# i bazy danych

0

Cześć,

Chciałbym napisać program, który będzie w głównej mierze opierał się o bazy danych. Niestety moja wiedza na ten temat jest bardzo skąpa. Schemat działania tego programu wygląda standardowo:

  1. Projektujemy bazę.
  2. Tworzymy jej zawartość.
  3. Korzystamy z zawartości.

Problem w tym, że zupełnie nie mam pojęcia jak to zrobić ani z której bazy skorzystać. ( w visual C# dostępne mam MS SQL, MS Access i Oracle).

Ta baza powinna być lokalna - jeden, albo kilka pliczków z danymi, z których skorzysta program.

  1. Z której bazy skorzystać?
  2. Czy do działania wystarczy mi plik bazy i standardowe funkcje w visual c#?
  3. Czym jest w praktyce MS SQL Server? - definicja z Wikipedii niewiele mi mówi.
  4. Czy to jest baza danych + program, który ją obsługuje?
  5. Czy potrzebuję takiego "Servera" w moim przypadku?

Pozdrawiam i z góry dziękuję za pomoc.

0

ad1. access
ad2. tak
ad3. server obslugujacy, zarzadzajacy baza danych MS SQL
ad4. ????
ad5. nie

0

Ty patrzysz na baze jak na plik (vide 2.). Z tym plikiem laczysz sie za pomoca jakiejs biblioteki (lub wlasnych funkcji), by wyciagac dane.

Wspolczesnie owa "biblioteka" jest czesto tak skomplikowana, ze latwiej z niej zrobic caly serwer udostepniajacy wiele baz wielu maszynom na raz. Tym wlasnie jest serwer bazodanowy, na przyklad Microsoft SQL Server, czy Oracle.

  1. Access jest prymitywny (nie obsluguje podstawowych rzeczy, jak sekwencje [tak wiem o @@IDENTITY i podobnych] oraz wyzwalaczy). Jak sie nie myle, wymaga rowniez do dzialania samego Microsoft Access zainstalowanego na maszynie, wiec nie jest tak, ze plik i twoj kod wystarcza. Jest to co prawda najprostsze z rozwiazan, jesli masz kryterium "jeden lub kilka plikow", ale moze znajdz sobie jakies inne bazy danych "embedded" - dzialaja podobnie, a Access bardzo ogranicza.

  2. Dla wiekszosci baz embedded bedziesz jeszcze potrzebowal biblioteke do laczenia sie z baza, czesto jest za darmo do pobrania na stronie producenta.

  3. Czyms wiecej niz prosta biblioteka polaczeniowa - obsluguje mase polaczen na raz, zaawansowane opcje back-up i odtwarzania danych, mase dodatkowych funkcjonalnosci.

  4. Sql Server? Powiedzmy, ze tak.

  5. Jesli wymagasz pojedynczych plikow to nie, nie potrzebujesz.

0
Szczawik napisał(a)
  1. Access jest prymitywny (nie obsluguje podstawowych rzeczy, jak sekwencje [tak wiem o @@IDENTITY i podobnych] oraz wyzwalaczy). Jak sie nie myle, wymaga rowniez do dzialania samego Microsoft Access zainstalowanego na maszynie, wiec nie jest tak, ze plik i twoj kod wystarcza. Jest to co prawda najprostsze z rozwiazan, jesli masz kryterium "jeden lub kilka plikow", ale moze znajdz sobie jakies inne bazy danych "embedded" - dzialaja podobnie, a Access bardzo ogranicza.

Do dostepu do Accessa wystarczy sterownik MSJet, ktory czesto nawet jest w systemie. Ale z reszta stwierdzenia zgadzam sie w 200% procentach. Znajdz sobie jakas prawdziwa baze danych.

0

Dzięki, mam jeszcze jedno pytanie. W jaki sposób mam sobie taką bazę (jej szkielet) stworzyć. Niech to będzie MS SQL.

  1. Czy wszytko musi się odbyć z poziomu kodu w c# i jakiejś biblioteki, czy może lepiej użyć jakiegoś "kreatora"?
  2. Polecicie jakieś konkretne narzędzie - bibliotekę / "kreator" ? ( najlepiej darmowe )

Z góry dzięki za pomoc.

0

Obsługa MSSQL jest w .NET standardowo (przestrzeń nazw System.Data.SqlClient).
Bazę można stworzyć skryptem w SQL, ale najprościej wyklikać w SQL Server Management Studio.

0

Albo najpierw wyklikać w SQL Management Studio a potem wyeksportować do pliku skrypt tworzący powstały schemat.

0
  1. Czy wszytko musi się odbyć z poziomu kodu w c# i jakiejś biblioteki, czy może lepiej użyć jakiegoś "kreatora"?

Wszystko zależy od zastosowań, sposobów jest kilka:

  • Kreatory/użycie DataSet/DataAdapter - dobre dla prostych zastosować, tabela z polami, proste powiązania - wyświetlanie w tabelce. Każda dodatkowa czynność, sprawdzenia czy inne rzeczy, które mają być odstępstwem od "normalności" stwarzają pewne problemy (które jednak można rozwiązać)

  • LINQ2SQL (bardzo wygodne narzędzie, dobry performance, nowoczesne rozwiązanie. Wymaga jednak dość dużej wiedzy (przynajmniej w zakresie rozumienia kodu, nie tylko przysłowiowego "składania klocków").

  • Manualna edycja, operacje na SqlDataReader (wg mnie wciąż niezawodne i najbardziej wszechstronne rozwiązanie). Pełna Swoboda i przejrzystość operacji. Łatwość debugowania. Ogromne możliwości edycji. Nie potrzeba wymyślnych kreatorów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1