|
SQLServer-Datenbank in
Visual Studio 2008
|
 |
|
Autor/Einsender: |
|
Michael Werner |
|
|
|
Das Datenbanktutorial zu SQLServer führt Sie schrittweise durch die Entwicklung
eines Visual Studio 2008-Projekts. In Visual Studio wird zunächst eine neue
SQL Server-Datenbank für SQLEXPRESS erstellt und in der in Visual Studio integrierten
Entwurfsansicht eine neue Tabelle angelegt.
|
|
|
Über die Aufgabenliste einer Instanz von DataGridView wird über den "Assistenten zum Konfigurieren von Datenquellen"
die Datenbanktabelle angebunden und mit dem Drag & Drop-Feature von Visual Studio 2008
wird zusätzlich ein datengebundenes Eingabeformular generiert. Mit dem gleichzeitig
generiertes BindingNavigator-Objekt kann nicht nur durch die Datensätze navigiert,
sondern auch die Commands Insert, Delete und Update gegen die Datenbank ausgeführt werden.
|
|
1. Ein neues Visual Studio Projekt anlegen |
|
In Visual Studio 8 legen Sie ein neues VB9-Projekt an /Datei/Neu/Windows Forms Anwendung, der Name hier: "SqlServerDatenbank anbinden".
|
|
1.1
Eine neue SQL Server-Datenbank erstellen
|
Über das Menü Ansicht öffnen Sie das Fenster des Server-Explorers.
|
|
Mit Rechtsklick auf "Datenverbindung" wählen Sie "Neue SQL Server-Datenbank erstellen". Im sich öffnenden Dialog "Neue SQL Server-Datenbank erstellen" wählen Sie nach einer Aktualisierung (Schaltfläche) den Servernamen für SQLExpress und den Datenbanknamen
„Address“:
|
Servername: [Benutzername]\SQLEXPRESS
|
Datenbankname: "Address"
|
|
Entscheiden Sie die Art der Authentifizierung, ob Windows-Authentifizierung (Standard) oder SQL Server-Authentifizierung. Im Beispiel wurde die
Standardeinstellung „Windows-Authentifizierung verwenden“ gewählt.
Nach Ok finden Sie eine neue Datenbank.dbo im
Server-Explorer: |
[Servername]\SQLExpress.Address.dbo
|
|
1.2 Die Tabelle erstellen
|
Öffnen Sie diese Datenbankdatei durch Klick auf das Pluszeichen (+). Mit Rechtsklick auf "Tabellen" wählen Sie
Neue Tabelle hinzufügen.
|
|
In einer in Visual Studio eingebetteten Entwurfsansicht für die Tabelle können Sie nun die Spaltennamen und Datentypen der Tabelle bestimmen.
|
|
Hier die Feldnamen und die dazugehörigen Datentypen im Überblick:
|
Feldname |
Felddatentyp |
ID |
Int |
Nachname |
nchar(50) |
Vorname |
nchar(50) |
Straße |
nchar(50) |
PLZ |
nchar(10) |
Ort |
nchar(50) |
Telefon |
nchar(20) |
Email |
nchar(50) |
|
Beachten Sie die unterschiedlichen maximalen Zeichenlängen für den Datentyp
nchar. Der Datentyp nchar umfasst Unicode-Daten fester Länge und
entspricht dem Datentyp Text in Access-Datenbanken. Wichtig:
|
Die ID-Spalte muss als Primärschlüssel definiert werden
|
Die ID-Spalte benötigt nun noch eine besondere Behandlung. Markieren Sie den Spaltennamen ID und wechseln Sie in das untere Fenster
Spalteneigenschaften.
|
Öffnen Sie Identitätsspezifikation und stellen Sie "(IstIdentity)" auf
Ja.
|
Schließlich machen Sie die ID-Spalte zum Primärschlüssel. Dazu klicken Sie im oberen Menü auf das Schlüsselsymbol. Das Schlüssel-Symbol erscheint nun vor der ID-Spalte und die Spalte ID ist Primärschlüssel.
|
Und zum Schluss das Speichern der Tabelle nicht vergessen (Diskettensym-bol)! Name der Tabelle:
tblAddress. Im Server-Explorer wird nun die Tabelle mit ihren Spalten angezeigt.
|
|
Mit Rechtsklick auf die Tabelle tblAddress im Server-Explorer und die
Auswahl Tabellendaten anzeigen wechseln Sie in die Datenblattansicht und können vorab Daten in die Tabelle schreiben. Im Beispiel „Mustermann“, „Max“, usw.
|
|
|
2. Die Datenbank dem Projekt hinzufügen und an ein DataGridView binden |
|
Laden Sie aus der Toolbox ein DataGridView in das Formular (Form1). Im Menü
DataGridView1-Aufgaben (Öffnen mit Klick auf den kleinen schwarzer Pfeil an der rechten oberen Ecke der DataGridView-Instanz) wählen Sie unter
Datenquelle auswählen den Link Projektdatenquelle hinzufügen, um den
Assistenten zum Konfigurieren der Datenquelle zu starten.
|
|
Wählen Sie im nächsten Dialog den Datenquellentyp "Datenbank" aus.
|
|
Im Dialog Verbindung hinzufügen müssen Sie nun mehrere Einstellungen vornehmen:
|
a) die Datenquelle auswählen (Schaltfläche „Ändern“): Microsoft SQL
Server
|
b) den Servernamen auswählen: [Servername]\SQLEXPRESS
|
c) zwischen Windows-Authentifizierung oder SQL Server-Authentifizierung wählen (Hier:
Windows-Authentifizierung).
|
d) Datenbanknamen auswählen: Address
|
Falls unter Servername nicht „Microsoft SQL Server“ angezeigt wird, müssen Sie über die Schaltfläche „Ändern“ die Datenquelle wechseln: Microsoft SQL Server auswählen.
|
|
|
Nach einem erfolgreichen Verbindungstest (Schaltfläche „Testverbindung“) wird mit OK die Verbindung hinzugefügt.
|
Im Assistenten geht es jetzt weiter mit: Datenverbindung auswählen. Wählen Sie die Schaltfläche
Neue Verbindung...
|
|
Die Frage, Verbindungszeichenfolge in der Anwendungskonfigurationsdatei
speichern? beantworten Sie mit Ja. Damit wird der AddressConnectionString in den Settings gespeichert (My
Project/Einstellungen) als:
|
Data Source=[Servername]\SQLEXPRESS;Initial Catalog=Address;Integrated
Security=True
|
|
Im nächsten Dialog sind die Datenbankobjekte zu wählen: In unserem Fall
benötigen wir nur die Tabelle: "Tabellen" aktivieren (Häkchen setzen).
|
|
Die Datenbankobjekte für das DataSet, die BindingSource und den
TableAdapter sind erstellt und die Spaltennamen werden im DataGridView angezeigt:
|
|
Der Code für das Laden der Tabellendaten in das DataGridView wurde im Load-Event generiert:
|
|
|
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: Diese Codezeile lädt Daten in die Tabelle
'"AddressDataSet.tblAddress". Sie können sie bei Bedarf
'verschieben oder entfernen.
Me.TblAddressTableAdapter.Fill(Me.AddressDataSet.tblAddress)
End Sub
End Class
|
|
|
Dass die Tabellendaten geladen werden, können Sie testen, indem Sie das
Projekt ausführen (Debuggen mit [F5]).
|
|
|
5. Ein datengebundenes Formular erstellen |
|
Im selben Projekt fügen Sie eine neue Windows Form hinzu (Menü
Projekt/Windows Form hinzufügen…). Im Beispiel heißt dieses Formular
EingabeDialog.
|
|
Datenquellenfenster öffnen
|
Öffnen Sie im Menü „Daten“ mit „Datenquellen anzeigen“ das
Datenquellen-Fenster (nicht zu verwechseln mit dem
SQL-Explorer-Fenster).
|
|
Öffnen Sie im AddressDataset die Tabelle tblAddress (Plus-Zeichen). Im DropDown-Feld von tblAddress wählen Sie
Details, um ein datengebundenes Formular zu bekommen.
|
|
|
Das Drag & Drop-Feature von Visual Studio 2008 |
|
Nun ziehen Sie mit gedrückter linken Maustaste die Tabelle tblAddress aus dem
Datenquellen-Fenster auf das Formular EingabeDialog. Nach dem
Loslassen der Maustaste wird nun von Visual Studio ein vollständiges
datengebundenes Formular mit Labels und TextBoxen generiert, die den
Spaltennamen der Tabelle entsprechen.
|
Darüber hinaus wird eine Instanz des BindingNavigator
erstellt, die an die Tabelle gebunden ist. Der BindingNavigator legt sich standardmäßig an die Top-Position des Formulars und ist ein mächtiges Multifunktionsobjekt, das die wichtigsten Basisaktionen einer Datenbankanwendung ermöglicht:
- ein Navigieren durch die Datensätze der Tabelle (Vor- und Zurück-Symbole)
- das Hinzufügen neuer Datensätze (gelbes Plus-Symbol +)
- das Löschen von Datensätzen (rotes Kreuz-Symbol x)
- das Speichern der geänderten Tabellendaten (Diskettensymbol)
|
Folgende Instanzen wurden instanziert:
- AddressDataSet
- TblAddressBindingSource
- TblAddressTableAdapter
- TableAdapterManager
- TblAddressBindingNavigator
Im Hintergrund wurden im Code zwei Ereignisprozeduren angelegt. Mit der Methode
Fill werden im Load-Event die Daten aus der Tabelle geladen. Mit dem Click-Event von
TblAddressBindingNavigatorSaveItem werden bei einem Klick auf das Speicher-Symbol im Navigator (Diskettensymbol) alle Änderungen in der Datenbank gespeichert (Methode
UpdateAll des TableAdapterManagers).
|
Ein zusätzlicher selbst eingebauter Button (btnOk) bewirkt vor dem Schließen des Formulars ein Speichern aller Änderungen an den Datensätzen.
|
|
|
Private Sub TblAddressBindingNavigatorSaveItem_Click(ByVal sender
As System.Object, ByVal e As System.EventArgs) Handles
TblAddressBindingNavigatorSaveItem.Click
'Speichern über das Diskettensymbol des Navigators
Me.Validate()
Me.TblAddressBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.AddressDataSet)
End Sub
Private Sub EingabeDialog_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: Diese Codezeile lädt Daten in die Tabelle
'"AddressDataSet.tblAddress". Sie können sie bei Bedarf
'verschieben oder entfernen.
Me.TblAddressTableAdapter.Fill(Me.AddressDataSet.tblAddress)
End Sub
Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles btnOk.Click
'Alles speichern
Me.Validate()
Me.TblAddressBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.AddressDataSet)
'Schließen
Close()
End Sub
|
|
|
|
Zur Komplettierung unserer kleinen Datenbank-Anwendung müssen wir noch für zwei Dinge im Startformular Form1 sorgen: Zum einen benötigen wir einen Button, mit dem wir den
Eingabe-Dialog öffnen (btnShowEingabeDialog).
|
Zum Anderen: Damit nach dem Schließen des Formulars EingabeDialog und dem Aktivieren des Form1-Fensters die Datenänderungen auch sofort im
DataGridView angezeigt werden, müssen wir im Ereignis Form1_Activated die Daten neu einlesen:
|
|
|
Private Sub btnShowEingabeDialog_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnShowEingabeDialog.Click
'Den EingabeDialog öffnen
My.Forms.EingabeDialog.ShowDialog()
End Sub
'Wird benötigt, um die Änderungen im EingabeDialog anzuzeigen
Private Sub Form1_Activated(ByVal sender As Object, ByVal e
As System.EventArgs) Handles Me.Activated
'Daten neu laden
Me.TblAddressTableAdapter.Fill(Me.AddressDataSet.tblAddress)
End Sub
|
|
|
Damit ist das Beispielprojekt soweit abgeschlossen.
|
|
|
Sie können das Projekt nun beliebig erweitern um weitere Abfragen gegen die Datenbank. Dazu gehen Sie am besten in das Tabellenschema, indem Sie die XSD-Datei
AddressDataSet.xsd im Projektmappen-Explorer anklicken (XSD =
XML-Schema-Definition). Durch Rechtsklick auf den TableAdapter und „Abfrage hinzufügen“ starten Sie den
Konfigurationsassistenten für TableAdapter-Abfragen. Aber dieses Thema bietet sich für ein weiteres
Tutorial an, dass zukünftig geschrieben werden kann.
|
|
|
|
Das Beispielprojekt benötigt ein installiertes SQLExpress und Visual Studio 2008. Der ConnectionString muss
auf einen eigenen SQLServer (im Projektmappen-Explorer/My Project/Einstellungen) angepasst werden.
|
|
Bei Fragen zu diesem Tutorial nutzen Sie bitte unser VB.Net-Forum. |
|