import pliku do bazy danych/eksport pliku z bazy danych

Dzisiaj pokaże jak wykonać import pliku typu csv, dat albo innego pliku, musimy tylko wiedzieć jak zapisywany jest plik. Aby to sprawdzić otwieramy plik za pomocą notatnika. Ja posłużę się takim pliczkiem z danymi które wyglądają tak:

imp1

Dodam jeszcze plik którego użyje abyście mogli sami pokombinować:

baza

plik pierwotnie miał rozszerzenie *.dat ale musiałem ją zmienić na *.csv

Zaczynamy standardowo od utworzenia nowego projektu. Po otworzeniu nowej formy przeciągamy na nią potrzebne nam elementy, te elementy to:

-DataGridView

-2x Button

-TextBox

-OpenFileDialog

Wszystkie te elementy możemy znaleźć w przyborniku. Wyglądają mniej więcej tak:

imp3

Przeciągamy wszystko na formę i ładnie układamy. Zmieniamy tekst przycisków na „Import” i „Eksport”. U mnie wygląda to tak:

imp4

 

Textbox posłuży nam do wyświetlenia ścieżki do plik który wybraliśmy .

 

 

 

 

 

 

 

Zaczynamy do  zainicjowania kilku zmiennych, czyli pod „Public class Form1” wpisujemy

Filename as String przechowywać będzie ścieżkę do naszego pliku, ds będzie nowym zbiorem danych. Wracamy do projektanta i dwukrotnie przyciskamy na button1 („import”). Program przechodzi nam samoistnie do kodu. Przycisk ten musi zainicjować nam Filedialog. Czyli opcje wyboru naszego pliku z dysku.

Sprawdzamy czy działa. Jeśli się udało pojawi nam się okno wyboru pliku. Pierwsze trzy linijki kodu odpowiadają za wygląd i wypełnienie naszego FileDialogu. OpenFileDialog1.Filter służy do filtrowania plików, czyli pokażą nam się tylko pliki z rozszerzeniem które zawarliśmy w cudzysłowie. Title będzie umieszczony na naszej formie. Filename wpisuje nazwe w textboxie w OpenFileDialog. Następnie tworzymy standardową pętle otwierającą nasz OpenFileDialog. Dodatkową rzeczą jest tu tylko

który wyświetli ścieżkę do pliku w textboxie. Nie musimy inicjować „FileName” ponieważ zrobiliśmy to na początku programu. Można sprawdzić czy działa. Teraz stworzymy funkcje ktora załaduje nam nasz plik do DataGridView i przeniesie jej elementy do „ds” zainicjowanego na początku programu.
Nazwiemy sobie taką funkcje „tworztabele”

Dobra może to trochę  zawiłe ale opisze co i jak co robi więc może będzie łatwiej. Najpierw musimy zainicjować nasze zmienne.

Ważne jest aby zorientować się w rodzaju kodowania naszych plików. zazwyczaj jest to UTF8, ale różny język i kultura (np, chiński) może mieć inny sposób kodowania. Więc warto otworzyć sobie jakiegoś excela i spróbować zaimportować do niego w różnych systemach, aż nasz plik będzie wyglądał normalnie. Ja do tego użyłem LibrOffica, tak to w nim wygląda.

imp5

Warto też rozpracować co zostało użyte jako rozdzielone informacje, w tym wypadku Tabulator i średnik. Dzielimy teraz informacje na kolumny kodem Split(ControlChars.Tab) określa nam separator czyli w tym wypadku tabulator:

Dodajemy funkcje która do naszego DatagridView wstawi kolumny (słowo „Field” można zmienić na np: kolumna):

Zostaje teraz wypełnienie naszej tabeli informacjami:

Na koniec zostaje nam tylko wyłapanie błędów i ewentualne wyświetlenie informacji, że nasz plik jest pusty. Służy do tego formuła

Zamykamy nasz Reader i zwracamy gotową tabele

Teraz odwołujemy się do naszej funkcji:

Inicjujemy nową tabele i wypełniamy ją naszą funkcją. Następnie podłączamy naszą tabele i wypełnioną bazę danych do DataGridView1.

Odpalamy i podziwiamy jak to wygląda, u mnie wygląda to ładnie:

imp6

Możemy już importować plik, teraz możemy naszą bazę danych zmieniać do woli, kasować i dodawać nowe wiersze. Musimy teraz naszemu przyciskowi „eksportuj” dać jakieś właściwości aby można było ten zmieniony plik gdzieś wykorzystać. Piszemy drugą funkcje, nazwiemy ją data_to_txt. Wygląda ona tak:

Przyciskamy w projektancie dwukrotnie na nasz przycisk „eksport” i przenosi nas do kodu. Kod który da nam możliwość zapisu to:

To tyle jeśli chodzi o cały kod można go pobrać stąd: kod

Cały projekt : Import Eksport plikow

Z plikami takimi można zrobić masę rzeczy ja na przykład wykorzystuje ten rodzaj programu do oddzielenia interesujących mnie informacji i usunięcia zbędnych a następnie zapisania go z takim samym rozszerzeniem. Można także stworzyć bazę danych i wypełniać ją takimi informacjami. Baza która przedstawiłem w tym tutorialu jest bazą nie zapisywalną. Jeśli będzie taka potrzeba (ktoś będzie chciał taki tutorial) to mogę go napisać ;]

Permalink do tego artykułu: https://visualmonsters.cba.pl/import-pliku-do-bazy-danycheksport-pliku-z-bazy-danych/

2 Komentarze

    • Krzsueik on 11 stycznia 2017 at 18:28
    • Odpowiedz

    Wszytko fajnie ale gdzie ja mam to dodac bo nie mam pojecia ?

    Private Function TworzTabele(ByVal SciezkaDoPliku As String) As DataTable

    Dim Tabela As DataTable = New DataTable(„MyTable”)
    Dim i As Integer
    Dim wiersze As DataRow
    Dim wartosc As String()
    Dim f As IO.File = Nothing
    Dim rodzajkodu As New IO.StreamReader(SciezkaDoPliku, System.Text.Encoding.UTF8)

    Try
    wartosc = rodzajkodu.ReadLine().Split(ControlChars.Tab)

    For i = 0 To wartosc.Length() – 1
    Tabela.Columns.Add(New DataColumn(„Field” & i))
    Next

    wiersze = Tabela.NewRow
    For i = 0 To wartosc.Length() – 1
    wiersze.Item(i) = wartosc(i).ToString
    Next
    Tabela.Rows.Add(wiersze)
    While rodzajkodu.Peek() -1
    wartosc = rodzajkodu.ReadLine().Split(ControlChars.Tab)
    wiersze = Tabela.NewRow
    For i = 0 To wartosc.Length() – 1
    wiersze.Item(i) = wartosc(i).ToString
    Next
    Tabela.Rows.Add(wiersze)
    End While
    Catch ex As Exception
    MsgBox(„Error building datatable: ” & ex.Message)
    Return New DataTable(„Empty”)
    Finally
    rodzajkodu.Close()
    End Try

    Return Tabela
    End Function

    1. Ma Pan rację, nie zawarłem tego w tutorialu, chociaż w elementach do pobrania (kod i projekt) znajduje się odpowiedź. Oczywiście „Private Function TworzTabele(ByVal SciezkaDoPliku As String) As DataTable” należy wstawić w metodzie Button1_Click

Dodaj komentarz

Twój adres email nie będzie publikowany.