C# i wielkie podstawy ADO - SQL

0

Witam serdecznie,

Mam pytanie związane z podstawą pracy na bazie danych. Mianowicie mam serwer SQL 2005 Express, całą baze w SQL utworzoną. W nowym projekcie C# mogę dodać nowy "Data Source", po czym wybieram sobie np. dostępne tabele. I teraz dla przykładu. Z Widoku "Data Sources" po lewej moge przeciągnąć tabele np. Employee (nie w postaci Data Grid'a , lecz pol tekstowych zbindowanych), wszystko samo sie dodaje na zasadzie paska przewijania rekordow i tak dalej. Aczkolwiek niestety nie do konca jest to co co mnie interesuje:(, zastanawiam sie czy isnieje mozliwosc aby efekt byl ten sam, a wiec aplikacja sama binduje mi wszystko pod texboxami, ale nie wyswietla mi tego Od razu po starcie, tylko np. mam pole tekstowe (numer karty pracownika - takie samo pole jest w strukturze bazy danych - kazdy pracownik oprocz swojego id jako klucz glownego, ma rowniez numer karty), i dopiero gdy wpisze numer karty to wyswietlone zostaja wartosci pola dla tego rekordu. Wiem ze pewnie pytam o cale morze...ocean wrecz...:(, ale naprawde ciezko sie w tym odnaleŹć dla nowej osoby:(, bylbym wdzieczny za pomoc wlasnie w tym temacie..:)

0

Wpisujesz numer, szukasz po tym kluczu w bazie danych odpowiedni rekord, a potem co za problem przypisać każdej labelce (etc.) odpowiednią wartość.?
Możesz zrobić odpowiednią metodę, która po otrzymaniu np. obiektu wypełni odpowiednio kontrolki.

0

No wlasnie z tym "przypisaniem wartosci do kontroli" z wynikow zwroconych przez baze mam klopot, zupelnie nie wiem jak to sie robi:(. Wszystko co opisalem wczesniej zrobil automat, podczas przeciagania tabeli Employee na pole formularza i tyle:(.

0

Ale potrafisz wykonać chociaż zapytanie do bazy i odszukać odpowiedni element używając np. LINQ?

0

Hmmm nie, LINQ wlasnie nie:(, nawet nie wiem z czym to sie je:(, potrafie za to wykonac oczywiscie odpowiednie zapytanie w kodzie SQL, bowiem baze stworzylem sam, takze to nie stanowi dla mnie problemu, tylko to:(

1

LINQ jest bardzo podobny do SQLa. Wg mnie powinieneś po prostu się douczyć o ADO.NET, a nie tak po omacku się w tym babrać.

0

Hmm ale co w ogole daje ten caly LINQ?:( nie masz pewnie zadnych podrecznych linkow do czegzos wartego zajrzenia?, kurcze tylko ze jak zawsze w takich sytuacjac, przykladow moze byc mnostwo, a ja po prostu mam swoj niechybny przypadek, ktory pewnie jest banalny, ale rozwiazanie np. wlasnie tego, mogloby mi wskazac jak pracowac z tymi danymi itd:(

0

Hmm ale co w ogole daje ten caly LINQ?
Wygodę, ale dopiero jak się już go pozna.
I wolniejsze działanie programu, niż bez LINQ. Bo zazwyczaj ręcznie napisana pętla albo zapytanie SQL będą szybsze...

0

Myślę, że jeśli chcesz tego liznąć na szybko to nie ma lepszego źródła: http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

0

Nie widzę potrzeby angażowania LINQ do tak prostego przykładu.
Aby przefiltrować dane z DataSetu wyświetlane na zbindowanych kontrolkach możesz użyć filtrowania w BindingSource - właściwość Filter, gdzie możesz określić filtr np. EmployeeId=6 (więcej info na ten temat http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.filter.aspx a tutaj o tym jak budować filtry http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression.aspx ). W tym przypadku wszystkie rekordy z tabeli siedzą w DataSet-cie a aplikacja wybiera te odpowiadające filtrowi.
Możesz też wyciągać przefiltrowane dane od razu z bazy (w takim sensie, że doklejasz do zapytania klauzulę WHERE i tam podajesz warunki). Jak to zrobić? Musisz otworzyć DataSet utworzony przez Visual Studio (*.xsd) w Designerze, kliknąć PPM na interesującą Cię tabelę i dodać nowe zapytanie (Add -> Query lub AddQuery w zależności od tego gdzie dokładnie klikniesz :) ). Na dwóch pierwszych stronach kreatora wybierasz pierwszą opcję ("use SQL statement" i "SELECT which returns rows") a następnie do zapytania dopisujesz WHERE z warunkami, zastępując wartości nazwami zmiennych np. "... WHERE EmployeeId=@id". Visual sam doda odpowiednie funkcje do Twojego TableAdaptera i od tego momentu możesz ich używać do wyciągania interesujących Cię danych z bazy. Metoda FillBy() (to oczywiście jej domyślna nazwa, możesz ją nazwać inaczej) w pierwszym parametrze przyjmuje DataSet, który ma zostać wypełniony danymi, a kolejne parametry odpowiadają zmiennym, które podałeś w zapytaniu SQL.

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