Naszym celem będzie manualne podłączenie się do bazy danych i przeniesienie danych na ListView. Tworzymy nowy projekt i przenosimy ListView na niego:
Jak wystartować projekt to już chyba każdy wie. ListView znajdziemy w przyborniku po lewej stronie. Najpierw podłączymy się do lokalnej bazy danych typu *.sdf , ale najpierw ustawimy nasz listView. Po przeniesieniu wybieramy nasz lv i w prawym górnym rogu rozwijamy mały trójkącik.
Nasz lv musi mieć wybraną opcje „Details”. Kolumny dodamy sobie później jak będziemy mieli przygotowaną bazę danych.
Wybieramy „Projekt” i „Dodaj formularz systemu Windows…”
Wybieramy „Lokalna baza danych” a na dole jak mamy taką ochotę zmieniamy jej nazwę. Teraz musimy dodać do naszej bazy danych jakieś kolumny które później będzie można eksportować do naszego lv. W tym celu przechodzimy do Eksploratora bazy danych po lewej stronie.
Rozwijamy naszą bazę danych, wybieramy prawym Tables i klikamy na „Create Tables”.
Tabele ustawiamy tak jak na obrazku, można samemu stworzyć tabelę, należy pamiętać tylko aby jedna kolumna miała klucz. Moja wygląda tak:
Jak widzimy moja tabela ma 5 kolumn. Każda liczona jest od 0-4. Teraz dodamy kolumny do naszego listView:
Aby to zrobić wracamy do designera i znowu rozwijamy nasz trójkącik. Wybieramy „Edytuj kolumny…”
Dodajemy pięć kolumn W miejscu „tekst” wpisujemy nagłówki naszych kolumn.
Nabiera to teraz kształtu. Dobra teraz będziemy potrzebowali kilka informacji. Otwórzmy sobie notatnik do którego skopiujemy kilka danych. Wybieramy po lewej stronie „Źródła danych” i „dodaj nowe źródło danych”:
Wybieramy naszą bazę danych i rozwijamy plusik. zaznaczamy ścieżkę do naszej bazy danych i kopiujemy ją do naszego notatnika.
klikamy dalej i zaznaczamy nasze tabele:
Zakończ i mamy pierwsze informacje potrzebne do połączenia. Wracamy do „Źródła danych” wybieramy nasze nowe źródło i klikamy na edytuj za pomocą projektanta:
W projektancie konfigurujemy nasz „TableAdapter”
Kopiujemy nasze querry do notatnika, Można zaprojektować własne pytanie klikając „Kreator zapytań..”. Na potrzeby tego tutoriala potrzebujemy tylko elementu podświetlonego na niebiesko.
Dobra mamy dwie potrzebne informacje w notatniku:
Przechodzimy do kodowania. Zaczynamy od zaimportowania potrzebnego składnika System.Data.SqlServerCe
1 2 3 4 5 6 7 |
Imports System.Data.SqlServerCe Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub End Class |
teraz musimy stworzyć połączenie z naszą bazą danych, potrzebne nam będą informacje z notatnika. W Form_Load wpisujemy:
1 2 3 4 5 6 7 8 |
Dim connection As New SqlCeConnection("ścieżka naszej bazy danych") Dim command As New SqlCeCommand("Query naszej tabeli", connection) Dim dr As SqlCeDataReader connection.Open() dr = command.ExecuteReader dr.Close() |
Teraz wystarczy tylko przesłać nasze dane do ListView. Numer kolumny znajduje sie w formule
(dr.Item(numer kolumny ).ToString) Musimy pamiętać, że ilość tych kolumn musi być taka sama jak ilość kolumn w ListView. Jeśli importowanych kolumn będzie więcej ostatnia kolumna nie będzie wyświetlana. kolumny nie muszą być wyświetlane w kolejności rosnącej. Kolejność możemy dowolnie modyfikować. Także miejsce gdzie chcemy nasze elementy wstawić nie jest sztywna, zamiast ListView może to być DataGrid, czy inny kontener nadający się do przechowywania danych.
1 2 3 4 5 6 7 8 9 |
While dr.Read() Dim new_item As New ListViewItem(Microsoft.VisualBasic.RTrim(dr.Item(0).ToString)) new_item.SubItems.Add(Microsoft.VisualBasic.RTrim(dr.Item(1).ToString)) new_item.SubItems.Add(Microsoft.VisualBasic.RTrim(dr.Item(2).ToString)) new_item.SubItems.Add(Microsoft.VisualBasic.RTrim(dr.Item(3).ToString)) new_item.SubItems.Add(Microsoft.VisualBasic.RTrim(dr.Item(4).ToString)) ListView1.Items.Add(new_item) End While |
U mnie całość wyglądała tak:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Imports System.Data.SqlServerCe Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim connection As New SqlCeConnection("Data Source=|DataDirectory|\Database1.sdf") Dim command As New SqlCeCommand("SELECT [pesel], [imie ], [nazwisko], [data_urodzenie], [stanowisko] FROM [pracownicy]", connection) Dim dr As SqlCeDataReader connection.Open() dr = command.ExecuteReader While dr.Read() Dim new_item As New ListViewItem(Microsoft.VisualBasic.RTrim(dr.Item(0).ToString)) new_item.SubItems.Add(Microsoft.VisualBasic.RTrim(dr.Item(1).ToString)) new_item.SubItems.Add(Microsoft.VisualBasic.RTrim(dr.Item(2).ToString)) new_item.SubItems.Add(Microsoft.VisualBasic.RTrim(dr.Item(3).ToString)) new_item.SubItems.Add(Microsoft.VisualBasic.RTrim(dr.Item(4).ToString)) ListView1.Items.Add(new_item) End While dr.Close() End Sub End Class |
Jeśli zgubiliśmy ścieżkę do naszej bazy danych można ją znaleźć klikając na właściwości naszego projektu:
Przechodzimy do ustawień, tam w polu „Wartość” znajdziemy ścieżkę do naszej bazy danych:
Wystarczy ją przekopiować. Teraz wytłumaczę jak połączyć się do bazy danych danych postawionej na serwerze, ja używam Microsoft SQL Server 2008. Zaczynamy od importu System.Data.SqlClient.
1 2 3 4 5 6 7 8 9 |
Imports System.Data.SqlClient Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub End Class |
Otwieramy połączenie z bazą danych, w Form_Load wpisujemy:
1 2 3 4 5 6 7 8 9 10 |
Dim connection As New SqlClient.SqlConnection connection.ConnectionString = ("Ścieżka do bazy danych") connection.Open() Dim adaptopr As New SqlClient.SqlDataAdapter Dim command As New SqlClient.SqlCommand("Query tabeli", connection) Dim dr As SqlClient.SqlDataReader = command.ExecuteReader(CommandBehavior.Default) dr.Close() |
Teraz importujemy nasze kolumny:
1 2 3 4 5 6 7 |
While dr.Read() Dim new_item As New ListViewItem(dr.Item(0).ToString) new_item.SubItems.Add(dr.Item(1).ToString) new_item.SubItems.Add(dr.Item(2).ToString) ListView1.Items.Add(new_item) End While |
Jeśli nie znamy ścieżki do bazy danych należy zajrzeć do ustawień tak jak w przypadku lokalnej bazy danych. (patrz wyżej). Odpowiem na wszystkie pytania.
przykładowy program można ściągnąć: tutaj