Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[C#] - Połączenie z bazą danych

tiger1990 02 Sep 2012 22:29 4344 10
  • #1
    tiger1990
    Level 12  
    Witam,

    Staram się napisać prosty program który połączy się z bazą danych.
    Na początku jednak może pokrótce opiszę:
    Zainstalowałem na komputerze MySQL Server 5.5 oraz program do adminowania baz danych MySQL Workbench. Utworzyłem bazę danych o nazwa "top dance" w której umieściłem kilka tabel i insertów. Baza napewno się utworzyła - poniżej widok z konsoli:

    [C#] - Połączenie z bazą danych

    MySql server skonfigurowałem tak aby działał na porcie 3306. Jedynym użytkownikiem jest root, zaś hasło do niego to "nataniel21"

    poniżej kod programu:

    Code: csharp
    Log in, to see the code


    Błąd jest prawdopodobnie w linijce z Server w którą nie wiem co mam wpisać. Jak dodam po przecinku numer portu 3306( gdy jest localhost) wyrzuca mi błąd:

    [img] [C#] - Połączenie z bazą danych
    Przy każdej innej próbie wyrzuca mi wyjątek

    [img] [C#] - Połączenie z bazą danych
    Poniżej wrzucam jeszcze obrazek z SQL Workbench - Admin:

    [img] [C#] - Połączenie z bazą danych
    Będe wdzięczny za jaką kolwiek pomoc, ogolnie wpisywałem w Server
    wszystkie mozliwe przypadki i nic mi nie zadziałało.

    z góry dziekuje
    Irek

    [/code]
  • #3
    tiger1990
    Level 12  
    Jeszcze jedno pytanie,
    Którą wersje Connectora powinienem ściągnąć, i do czego on służy?
    Oraz gdzie powinienem go zainstlować? Do katalogu Visual Studio 2010 czy do katalogu gdzie instalowałem MySQL?
  • Helpful post
    #4
    mickpr
    Level 39  
    Connector to inaczej natywny klient do łączenia z bazą MySQL.
    Ściągnij taki, które pasuje do wersji twojego serwera (i do .NET).
    http://dev.mysql.com/downloads/connector/net/
    Najlepiej installer (MSI), najmniej roboty.

    Biblioteki powinny być zarejestrowane (robi to instalator), abyś je widział w referencjach projektu, gdzie musisz je dodać.
    Ale - dodajesz referencje bibliotek do projektu - to nie zapomnij potem o nich przy tworzeniu instalatora.
  • #5
    tiger1990
    Level 12  
    Ok, wielkie dzięki za pomoc - udało mi się połączyć z bazą, dodać wartości do tabeli wiec wszystko działa ok (:

    Mam jeszcze pytanie ale już odnośnie czegoś innego. Chce zrobić aplikacje okienkową - połączoną z bazą danych. Pomijając proces implementacji chciałbym aby
    aplikacja otwierała się (była plikiem exe)
    Wiem, że na pewno muszę zrobić pliki dll ale co dalej?
  • #6
    mickpr
    Level 39  
    tiger1990 wrote:
    Wiem, że na pewno muszę zrobić pliki dll ale co dalej?

    Nie jestem programistą, jest nim (na przykład) mój kolega. I to on mógłby wysnuć elaborat, jak się łączyć i jak pisać aplikacje. jak wyświetlać dane, porcjować je, obsługiwać transakcje itd. Ale zostawmy go na razie.

    Moim zdaniem musisz primo - stworzyć instalator, który taką bazę zainstaluje, zainicjuje.
    Secundo - sam program i dane.
    Tworzenie dll -ek nie jest konieczne, ale zapewne będziesz wiele z nich dołączał do projektu.

    Zacznij od dokładnego rozrysowania sobie całości najpierw na karce (łącznie z widokiem formatek i strukturą bazy danych).
    Implementacja - to pikuś w porównaniu z dobrym zaprojektowaniem aplikacji.
    Uwierz mi - lepiej coś 10 razy dłużej projektować niż 10 razy potem poprawiać.
  • #7
    tiger1990
    Level 12  
    Masz racje (: Dzisiaj cały dzień siedziałem i projektowałem bazę danych, połączenia itd na kartce.

    Gryzie mnie jeszcze jedna rzecz. Nawiązałem połączenie i chce zrobić zapytanie select. I teraz tak w trybie połączeniowym mam SqlDataReader w którym znajdują się wyniki owego zapytania. Czy istnieje możliwość wypisania np: całego szóstego wiersza? albo szóstego wiersza i drugiej kolumny?

    Czy w takim wypadku muszę użyć dataSeta i trybu bezpołączeniowego?

    I jeszcze jedno pytanie: W wypadku takiej aplikacji lepiej chyba używać trybu bezpołączeniowego niż otwierać i utrzymywać połączenie na stałe?
  • #8
    mickpr
    Level 39  
    SqlDataReader - jak nazwa wskazuje - to taki kursor w jedną stonę (chyba, nie jestem pewny).
    Więc otwierasz reader, a potem wywołujesz jego metodę o nazwie "Read"
    Pobiera ci ona właśnie 1 wiersz (kolejno).
    Oto prosty przykład:

    Code: csharp
    Log in, to see the code

    Ten kod pokaże wszystkie rekordy z podanej tabeli.

    Tryb bezpołączeniowy (Dataset i takie tam) nie przypadły mi do gustu, ale są promowane, więc się nie będę wypowiadał.
  • #9
    tiger1990
    Level 12  
    Ok dobra, będe myślał nad tym jeszcze przez noc (:

    Mam prośbę - Jak byś mógł spytać kolegę jak zrobić z danego projektu plik exe byłbym bardzo wdzięczny.

    I jeszcze inne pytanie - czy da się mając na jednym komputerze bazę danych z jakimiś tabelami i wartościami przenieść ją w łatwy sposób na inny komputer?
  • Helpful post
    #10
    mickpr
    Level 39  
    tiger1990 wrote:
    Mam prośbę - Jak byś mógł spytać kolegę jak zrobić z danego projektu plik exe byłbym bardzo wdzięczny.
    Kompilując i uruchamiając projekt plik exe powstaje ci automagicznie (o ile nie ustawiłeś inaczej).

    tiger1990 wrote:
    czy da się mając na jednym komputerze bazę danych z jakimiś tabelami i wartościami przenieść ją w łatwy sposób na inny komputer?

    Da się, wystarczy wyeksportować na jednym serwerze i zaimportować na drugim.
    A może lepiej udostępnić serwer przez sieć? (poczytaj o uprawnieniach, zaporze sieciowej itd.. , bo tutaj już "localhost" nie zadziała).
  • #11
    tiger1990
    Level 12  
    Ad1. Faktycznie w folderze bin tworzy się taki plik (: Super to rozwiązuje jeden z moich problemów

    Ad2. Dzięki (: Właśnie zauważyłem ze program MySQL Workbench umożliwia zrobienie czegoś takiego. (:

    Co do serwera to tworzę, heh dużo powiedziane bo dopiero się uczę, aplikacje dla mojej siostry która zarządza małą firmą. Może faktycznie umieszczenie bazy danych na serwerze a nie jak teraz myślałem na komputerze będzie lepszym rozwiązaniem...

    Wielkie dzięki za pomoc. Pomogłeś mi bardzo bardzo... Teraz już tylko dobrze to przemyśleć i zrealizować