Visual Basic: Eigener Online Chat mit MySQL Datenbank – Login Formular Teil 1

Heute möchte ich ein kleines Tutorial beginnen, das sich mit einem kleinen Online Chat beschäftigt, der eine Verbindung zu einer MySQL Datenbank hat.

Vorher müssen wir uns überlegen, was unser Chat denn alles brauch und was er können sollte. Bevor wir uns mit dem Design und den Programm Code beschäftigen, müssen wir uns noch folgendes runterladen und installieren Connector/Net, damit wir später auch eine Verbindung erstellen können.
Jetzt überlegen wir uns, welche Funktionen wir einbauen wollen. Als erstes bräuchten wir ein Formular für die Anmeldung, dann das eigentliche Chat-Fenster, dann sollte es noch Einstellungsmöglichkeiten geben und eine Chat-History und das wichtigste ist eine Datenbank, denn sonst funktioniert es später nicht. Aber heute geht es erst einmal nur um das Formular.

Wir öffnen unser Visual Studio, wer es noch nicht hat, der kann sich die Express Version kostenlos auf der Microsoft Seite herunterladen.
Das Projekt nennen wir jetzt der Einfachheit halber Online Chat.
So müsste die nackte Oberfläche der erstellten Form aussehen.
Für unser Formular brauchen wir jetzt zwei Label, zwei TextBoxen und noch zwei Buttons, die wir dann in der Form anordnen.
Label1 habe ich Benutzer genannt und Label2 Passwort. Die beiden TextBoxen werden rechts von den Labels platziert. In der zweiten TextBox, die neben dem Passwort steh, wollen wir nun noch eine Eigenschaft ändern, damit, wenn wir später das Passwort eingeben, niemand mitlesen kann. Also die TextBox2 anklicken und unter Eigenschaften PasswordChar ein Zeichen eingeben, das an Stelle des Passwortes erscheinen soll. Gebräuchlich sind hier Sternchen *.
Dann werden noch zwei Buttons eingefügt, zum Absenden und zum Abbrechen. Die Beschriftung können immer direkt bei den Eigenschaften unter Text geändert werden.
Und schon ist auch schon das Design fertig. Natürlich wird man damit keinen Schönheitswettbewerb gewinnen, aber zunächst soll es erst einmal nur seinen Zweck erfüllen.

Jetzt kann es auch schon zum Programm Code gehen. Aber bevor wir es vergessen, klicken wir auf Projekt -> Verweis hinzufügen … -> Durchsuchen. Nun müssen wir die Mysql.Data.dll suchen, die liegt in dem Ordner, den wir zu Anfang installieren sollten.
Wenn wir das getan haben, machen wir einen Doppelklick auf den Absenden Button und bekommen unsern Code zu sehen.

Public Class Form1
  Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click

  End Sub
End Class

Als erstes importieren wir Mysql.Data.MysqlClient in unser Projekt, dafür müssen wir nur an den Anfang die kleine Zeile:

Imports Mysql.Data.MysqlClient
Public Class Form1
  Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click

  End Sub
End Class

Jetzt kommt der ganze Code für das Formular, mit anschließender Erklärung zu den einzelnen Programmzeilen.

Imports MySql.Data.MySqlClient
Public Class loginForm
  Dim mysqlConnection As MySqlConnection
  Private Function Verbindung()
    mysqlConnection = New MySqlConnection
    mysqlConnection.ConnectionString = _ “server=Server;port=3306;user id=Benutzer; password=Passwort;database=Datenbankname”
    mysqlConnection.Open()
    Return 0
  End Function

  Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click
    Try
      Verbindung()
      Dim Mysqladapter As New MySqlDataAdapter
      Dim sql = “Select * from user_db where user_name=’” _ & TextBox1.Text & “‘ And user_passwort=’” & TextBox2.Text & “‘;”
      Dim command As New MySqlCommand
      command.Connection = mysqlConnection
       command.CommandText = sql
      Mysqladapter.SelectCommand = command
      Dim meineDaten As MySqlDataReader
      meineDaten = command.ExecuteReader

      If meineDaten.HasRows = 0 Then
      MsgBox(“Die Anmeldedaten sind nicht korrekt”)
    Else
      chatFenster.Show()
      Me.Close()

    End If
      mysqlConnection.Close()
    Catch ex As Exception

    End Try

  End Sub

  Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click
    Me.Close()
  End Sub
End Class

Wie oben schon erwähnt, importieren wir zuerst Mysql.Data.MysqlClient.
Die Klasse habe ich um genannt in loginForm. In dieser Klasse deklarieren wir zuerst mit Dim die MysqlConnection. Dann erstellen wir eine Funktion, die später dann eine Verbindung zu unserer Datenbank öffnen soll, damit wir mit ihr arbeiten können. In einem String werden alle Daten gespeichert, die wir für die Verbindung mit der Datenbank brauchen, Server, Username, Passwort und Datenbankname.

Jetzt kommt der eigentliche Hauptteil, der ausgeführt wird, wenn wir den Absende Button in unserem Formular drücken. Das beginnen wir mit Try, um eventuelle Fehlermeldungen abzufangen. Try bedeutet so viel wie versuchen. Wir rufen in diesem Try zuerst die Funktion Verbindung auf und erstellen einen neuen MySqlDataAdapter und unsere SQL Query, die in der Datenbank nach unseren Benutzeraccount suchen soll. Die Struktur der Datenbank werde ich im nächsten Artikel zeigen. Also die SELECT Anweisung erst einmal so hinnehmen.

Nun erstellen wir eine neue Prozedur, die MySqlCommand. Der weisen wir unsere Verbindung und unseren Query String zu und lesen sie mit dem MySqlDataReader aus.
Wir erstellen nun eine IF Anweisung, um zu prüfen, ob es einen passenden Datensatz in unserer Datenbank zu finden ist. Ist dies nicht der Fall, wird eine MessageBox aufgepoppt, mit dem Inhalt: “Die Anmeldedaten sind nicht korrekt.”
Sollten sie einen Datensatz gefunden haben, geht es mit der ELSE Anweisung weiter, in der wir das eigentliche Chat Fenster starten. Und anschließend wird unser Login Fenster geschlossen.
Danach schließen wir die Datenbankverbindung wieder, beenden den Try und die Sub.
Da wir zwei Buttons haben, gehen wir noch einmal zurück zum Design und klicken doppelt auf abbrechen und der entsprechende Code wird eingefügt.
Indem schreiben wir nur die Anweisung, wenn jemand auf Abbrechen klickt, dann soll sich das Login Formular schließen.

Ich denke, das war für das Formular zunächst alles, hoffentlich habe ich nichts wesentliches vergessen, aber ich denke nicht. Bald geht es weiter mit dem zweiten Teil der Serie und erstellen dort die MySql Datenbank.

Visual Basic: Hello-World Programm erstellen

Heute werde ich ein kleines Tutorial zum Thema Visual Basic vorstellen. Gedacht ist es für Anfänger, um sie erst einmal mit dem Code vertraut zu machen. Da dies der erste Artikel zum Thema Visual Basic ist, wird das erste kleine Programm, wie üblich, wenn man eine neue Sprach lernt, ein Hallo-Welt Programm sein.
Die passende Entwicklungsumgebung, damit der Code später auch kompiliert werden kann, findet man auf der Seite von Microsoft “Visual Studio 2010 Express“, die Version ist kostenlos. Alternativ gibt es die Version auch bei Chip.de.

So nachdem das Programm nun installiert ist erstellen wir ein neues Projekt. Schon erstellt Visual Studio eine neue Form. Man kann sofort die grafische Benutzeroberfläche des Programms sehen und mit nur wenigen Klicks kann man sich die Elemente aus der Toolbox auf seiner Form platzieren. Geht alles super einfach, hat nur keinen großen Nutzen, so lange man nicht weis was man macht. Deswegen wollen wir uns mal den Code anschauen, dafür einfach einen Rechtsklick und auf Code anzeigen gehen, dann müsste folgender Code stehen.

Public Class Form1

End Class

In dieser Class Form1 schreiben wir unseren Code, damit wir später was in unserem Programm sehen.

Public Class HelloWorld
  Private Sub HelloWorld_Load(ByVal sender As System.Object, ByVal _
  e As System.EventArgs) Handles MyBase.Load
    Me.Text = “Hello World”
    Me.Width = 280
    Me.Height = 280    
    Dim Label1 As New Label
    Me.Controls.Add(Label1)
    Label1.Text = “Hello World”
  End Sub
End Class

Das ist nun der Code für unser erstes kleines Visual Basic Programm. So nun die Erklärung zum Code. Die Klasse habe ich erst einmal in HelloWorld umbenannt.
Als erstes beginnen wir mit Private, damit sagen wir, dass der Code der in diesem Modul steht, nur innerhalb genutzt werden kann und von außen kein Zugriff stattfinden kann. Mit Sub deklarieren wir nun den Namen, mit dem der Code der Sub Prozedur definiert wird. Wir benennen nun die Form1_Load in HelloWorld_Load um. Für das spätere Ergebnis, macht es keinen Unterschied, man sollte dennoch möglichst darauf achten, immer Namen zu vergeben, die direkt aussagen, wofür sie stehen. HelloWorld_Load zeigt, dass die Funktion ausgeführt wird, wenn das Fenster geladen wird.

Jetzt kommen wir zum eigentlichen Code. Als erstes weisen wir dem Programm/Fenster, das wir später sehen werden einen Namen zu, ganz einfach mit Me.Text = “Hello World”. Wir müssen Me verwenden, weil man nicht auf sich selbst verweisen kann, das lässt das Programm nicht zu. Als immer daran denken, Me zu verwenden, wenn es sich dabei um die Klasse handelt, in der gerade geschrieben wird.
Als nächstes bestimmen wir die Größe des Fensters, auch sehr einfach mit width, wie Breite und height, wie Höhe. Als nächstes wollen wir ein neues Label erstellen, dafür müssen wir zunächst die Variable Label1 mit Dim deklarieren und mit as new Label ein neues Label erzeugen.
Im nächsten Schritt fügen wir das neue Label in die Form ein mit Me.Control.Add(Label1). Jetzt können wir dem Label einen Text zuweisen, der dann später angezeigt werden soll. Dafür schreiben wir Label1.Text = “Hello World”.
Und schon ist das erste Programm fast fertig, denn jetzt muss es noch kompiliert werden, denn sonst wird das nichts. Also einfach mal auf den grünen Play Button Klicken und wenn ihr alles richtig gemacht habt, müsste sich nun das Programm mit der Ausgabe Hello World erscheinen.

Was ich noch vergessen hatte, in dem Code hatte ich einen Zeilenumbruch gemacht, damit es vernünftig aufs Bild passte, dafür muss man in Visual Basic einen Unterstrich machen, damit dem Kompilierer klar ist, dass die Zeile in der nächsten Zeile noch weiter geht.

Mathe: Zahlen schriftlich dividieren

Das Dividieren oder die Division ist einer der vier Grundrechenarten und ist damit sehr wichtig um spätere Aufgaben lösen zu können. Zunächst sollten wir grundlegende Dinge klären:
- die Zahl, die geteilt werden soll, nennt man Dividend
- die Zahl, mit der man teilt, nennt sich in der Mathematik Divisor
- das Ergebnis einer Division ist der Quotient

Also schreiben wir:
Dividend : Divisor = Quotient
Nun wollen wir nicht länger drum rum reden und mit der ersten kleinen Aufgabe beginnen.

72:6 = 12
6
12
12
0

Zuerst ist zu beachten, dass wir von links nach rechts rechnen. Wir nehmen die erste Zahl die 7, die 6 passt genau einmal rein, deswegen schreiben wir jetzt die 6 unter die 7. Die 1 kommt hinter dem Gleichheitszeichen. Als nächstes unterstreichen wir die 6 und bilden die Differenz, also den Unterschied zwischen 7 und 6, der ist 1. Der wird nun direkt unter die 6 geschrieben und nun holen wir die nächste Zahl herunter und schreiben sie neben die 1.
Jetzt müssen wir wieder schauen, wie oft die 6 in die 12 passt, genau 2 mal, ohne Rest. Also können wir wieder unterstreichen und eine 0 hinschreiben und die 2 kommt hinter die 1 oben neben dem Gleichheitszeichen.
Das wäre geschafft, war aber auch noch nicht wirklich schwierig, aber es gibt Besonderheiten, die in der nächsten Aufgabe klarer werden.
Denn wenn der Dividend kleiner ist als der Divisor, müssen wir eine weitere Zahl dazu holen.

126:6 = 21
12
  6
  6
  0

Wollen wir hier die erste Zahl nehmen, die 1, dann stellen wir fest, das der Divisior, die 6 viel größer ist, deswegen nehmen wir die 2 auch noch mit dazu. Damit ist der Dividend wieder größer und wir können wie im ersten Beispiel rechnen.

Leider sind die Zahlen nicht immer so glatt und so kann schnell auch mal eine Kommazahl heraus kommen, das zeig ich euch an einem weiteren Beispiel.

231,00:4 = 57,75
20
 31
 28
  30
  28
   20
   20
    0

Um direkt zu verdeutlichen, habe ich unsere Zahl mit zwei weiteren Nullen hinter dem Komma ausgestattet. Das ist erlaubt, nur schreibt man sie normalerweise nicht hin. Zunächst haben wir die 20, und wir bekommen 5 raus, die wir oben hin schreiben, dann geht es weiter 28, wir bekommen 7 heraus und schreiben so auch oben hin. Die Differenz ist nun 3. Entweder schreiben wir jetzt 57 als Ergebnis mit Rest 3, oder wir rechnen noch weiter und weil wir alle Füchse :-) sind, machen wir weiter.

Jetzt haben wir die 3 dort stehen, können aber damit nicht rechnen, weil sie kleiner ist als die 4, oben stehen auch keine Zahlen mehr, als müssen wir uns einer der Nullen dazu holen, die ich zum besseren Verständnis dorthin geschrieben habe. Wichtig ist, das wir eine Zahl genommen haben, die hinter dem Komma steht, also müssen wir hinter unserem Ergebnis auch ein Komma setzen, sonst könnten wir was falsches heraus bekommen. Jetzt rechnen wir einfach wie gewohnt weiter, die Hürde mit dem Komma ist genommen.