Google
 
Diesen Blog abonnieren

Beliebte Posts

Montag, 30. November 2015

C# - Formulare verschönern

Das Formular soll nun noch etwas aufgepeppt werden. Ähnlich wie von Access gewohnt, gibt es die GroupBox (um Username, Password und Login button) und eine PictureBox für die Aufnahme von Bildern.
Aber woher nun die Bilder nehmen? Eine gute Quelle ist IconArchive. Hier können alle möglichen und unmöglichen Bilderr gratis in diversen Auflösungen heruntergeladen werden:

In der Suchbox kann die Kategorie eingegeben werden, im Search Filter links, die gewünschte Auflösung. Bei Mausover erscheinen die möglichen Formate, die angewählt werden können. Das Bild muss dann mit rechter Maustaste und 'Bild speichern unter ....' nur noch heruntergeladen werden.

Ist die Picturebox im Visualstudio ausgewählt, so erscheint oben rechts ein Pfeil in einem Rechteck. Dieser Pfeil dient direkt der Bildauswahl. In der nun erscheinenden Dialogbox kann das Bild 'importiert' werden.

Für Icons in Buttons wird die Grösse 16x16 verwendet. Das Bild wird über die Eigenschaft 'Image' ausgewählt und mit 'ImageAlign' nach Wunsch platziert.


Damit sieht das Formular nun etwa so aus:


C# und mySQL - Login Formular

Nachdem die Anbindung an die SQL Datenbank geglückt ist, erstellen wir doch ein Login Formular. Schliesslich wollen wir die Datenbank nutzen.

Das Formular wird in Windows Forms erstellt und sieht ungefähr so aus:
In mySQL erstellen wir eine Tabelle 'edata' mit den folgenden Feldern:


Mit dem folgenden Code greifen wir nun auf die Daten zu:

using System;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
 
 
 
namespace First_C_Sharp_App
{
    public partial class Login : Form
    {
         
        public Login()
        {
            InitializeComponent();
        }
 
       
 
        private void btnLogin_Click(object sender, EventArgs e)
        {
            try
            {
                string myConnection = "datasource=localhost;port=3306; " +
                                      "username=root;password=xyz";
                MySqlConnection myConn = new MySqlConnection(myConnection);
                MySqlCommand SelectCommand = new MySqlCommand
                    ("select * from database.edata where user_name='" +
                         username_txt.Text + "' and password='" 
                         + password_txt.Text + "' ;", myConn);
                MySqlDataReader myReader;
                myConn.Open();
                myReader = SelectCommand.ExecuteReader();
                int count = 0;
                while (myReader.Read())
                {
                    count++;
                }
                if (count==1)
                {
                    MessageBox.Show("Username und Password ist correct");
 
                }
                else if (count>1)
                {
                    MessageBox.Show
                        ("Duplicate Username and password ... Access denied");
                }
                else
                {
                    MessageBox.Sho
                        ("Username or password not correct ... Please try again");
                } 
                
                myConn.Close();
 
 
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
 
            }
 
        }
    }
}
'user_name' und 'password' sind bewusst einfach gehalten, damit man einfach herumspielen kann.
Passwort korrekt, doppelt, falsch ....
Ansonsten müsste die Routine selbst erklärend sein.
Zum Schluss noch ein Tipp: Gibt man im Textfeld 'Password' unter 'Eigenschaften' als 'PasswordChar' z.B. '#' ein, so wird die Eingabe mit diesem Zeichen maskiert, wie es sich für die Eingabe von Passwörtern gehört. Selbstverständlich kann das auch per Coder erledigt werden:
password_txt.PasswordChar = '#';
 Der Code muss aber wo erfolgen? Natürlich nach
 InitializeComponent();
Andernfalls ist das Fenster bereits geöffnet und die Eingabe erscheint im Klartext.

Sonntag, 29. November 2015

Visual Studio - Productivity Power Tools 2015


Die Productivity Power Tools stellen einige phantastische Funktionen zur Erweiterung von Visaul Studio zur Verfügung. Neben einigen praktischen Hilfsmitteln welche die Lesbarkeit des Codes erhöhen ist auch eine HTML Kopierfunktion des Codes enthalten. Wer sich also vielleicht gewundert hat, wie der Codeschnipsel aus dem letzten Beitrag entstanden ist, hat hier die Lösung - Ctrl C, Ctrl V, fertig.
Ich behaupte mal, es lohnt sich auf jeden Fall diesen Link zu besuchen und dieses Video anzuschauen.
Diesem Kommentar kann ich mich nur anschliessen:
These are terrific features, and I congratulate your team on building them.

C# und mySQL - Connect Database

Nachdem alles eingerichtet ist, kann der Connect folgendermassen durchgeführt werden:
Es wird von einem Windows Form ausgegangen und einem Button 'btnMySQL'. Mit dem folgenden Code wird ein Connect der Datenbank erreicht:

using System;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
 
 
 
namespace First_C_Sharp_App
{
    public partial class Form1 : Form
    {
        mySqlDataAdapter myDataAdapter;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void btnMySql_Click(object sender, EventArgs e)
        {
            try
            {
                string myConnection = "datasource=localhost;port=3306; "+
                                      "username=root;password=xyz";
                MySqlConnection myConn = new MySqlConnection(myConnection);
                string sql = "SELECT * database.edata ;";
                myDataAdapter = new mySqlDataAdapter(sql, myConn);
                MySqlCommandBuilder cb = new MySqlCommandBuilder();
                myConn.Open();
                DataSet ds = new DataSet();
                MessageBox.Show("Connected");
                myConn.Close();
 
 
            }
            catch (Exception ex )
            {
                MessageBox.Show(ex.Message);
 
            }
        }
 
        private void btnLogin_Click(object sender, EventArgs e)
        {
 
        }
    }
}

Ein erfolgreicher Connect wird durch eine Messagebox quittiert. Bei Fehlern erscheint die entsprechende Systemmeldung.

Von Access nach C# und mySQL - Die Datenbank

C# allein kann Access nicht ersetzen - es braucht eine Datenbank. Dazu gibt es hauptsächlich die 3 folgenden Möglichkeiten:
- Anbindung an eine Access .mdb -> Am Anfang vielleicht für kleinere Projekte sinnvoll
- Verwendung von mySQL -> Für private und kommerzielle Projekte (Lizenz beachten)
- Verwendung von msSQL -> Für kommerzielle Projekte

Für einen Umstieg habe ich mich vorderhand für mySQL entschieden. Auch hier gibt es eine Community Edition.
Die Einrichtung der Datenbank würde den Rahmen dieses Blogs sprengen. Hier gibt es aber eine perfekte Einführung in die Thematik. Ist die Datenbank so eingerichtet, können die folgenden Beispiele direkt verwendet werden.

Von Access nach C# und mySQL

Nach 20 Jahren Access wird es langsam Zeit, sich davon zu verabschieden. Einerseits wird Access von Microsoft nur noch halbherzig weiterentwickelt, auf der andern Seite erüllt Access einfach die aktuellen Ansprüche an eine Programmiersprachre nicht mehr.
Eine gute Alternative ist der Umstieg auf Visual Studio 2015. Micorsoft stellt für kleinere Anwendungen seit einiger Zeit gratis 'Visual Studio Comunitiy' zur Verfügung. Die Lizenzbedingungen sind sehr grosszügig und sind natürlich vor einem kommerziellen Einsatz sorgfältig zu prüfen. Für kleinere Projekte ist der Einsatz der Edition absolut legal! Wächst das Projekt, so sollte der Kauf der Professional Edition ja dann kein Problem darstellen.