Die Daten einer Windows Form Application (C#) in eine SQL Datenbank speichern

krokev

Mitglied
Ich habe eine Gui die mit Textboxen und Radiobutton befüllt ist und muss diese Daten nun beim Klick auf den Button in meine SQL Datenbankspeichern.

Ich habe kein problem mit meinen insert Befehlen ich stelle mir nur die frage wie ich das am besten/schönsten programmiere und wo ich die insert Befehle schreibe bzw ob ich mit Stored Procedures arbeiten sollt und diese dann beim Klick auf den Button aufrufen sollte?

LG
 
Die Frage ist, was du zukünftig mit der DB vorhast!

Schreiben von Daten via Stored Procedure hat nur Sinn, wenn du darin zum einen Logik hast und zum anderen die DB unterschiedlichen Anwendungen zur Verfügung stehen soll, diese aber über den gleichen Weg Daten schreiben (in dem Fall werden dann nämlich die INSERT, UPDATE und DELETE Grants entfernt bzw. nicht vergeben).

Wenn es eine DB rein für deine Anwendung ist, kann diese auch die DB Commands enthalten. Ob du dies via ADO.NET, OleDB (wohl weniger zu empfehlen) oder z.B. EntityFramework machst, ist dann dir überlassen
 
okay danke für den tipp
hast du züfälliger weisse ein Codebeispiel zu einem dieser Beispiele(ADO.NET oder EntityFramework)?

bzw. kannst du mir bei meinem ersten Versuch weiterhelfen?

Code:
public static int ExecuteNonQuery(string sql)
        {
            SqlConnection connection = new SqlConnection(connectionString);

            try
            {
                connection.ConnectionString = connectionString;
                connection.Open();
                SqlCommand command = new SqlCommand(sql, connection);
                return command.ExecuteNonQuery();
            }
            catch (Exception a)
            {
                if (a.Source != null)
                    Console.WriteLine("IOException source: {0}", a.Source);
                throw;
            }
        }


 private void buttonSpeichern_Click(object sender, EventArgs e)
        {
            
        }

         public int AddEmployee(char first_name, char last_name)
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                StringBuilder sb = new StringBuilder();
                sb.AppendLine("INSERT INTO [visitor_database] ([first_name], [last_name])");
                sb.AppendLine("OUTPUT INSERTED.ID");
                sb.AppendLine("VALUES (@first_name, @last_name)");

                using (SqlCommand cmd = new SqlCommand(sb.ToString(), connection))
                {
                    cmd.Parameters.AddWithValue("first_name", first_name);
                    cmd.Parameters.AddWithValue("last_name", last_name); 

                    return cmd.ExecuteNonQuery();
                }
            }
        }

Bitte um Hilfe
DANKE :)
 
Zuletzt bearbeitet:
Ich suche einfach die einfachste variante um

Code:
//auslesen der Eingabe
            string Vorname = textBoxVorname.Text;
            string Nachname = textBoxNachname.Text;
            string Ankunft = Convert.ToString(dateTimePickerAnkunft);
            string Grund = comboBoxGrund.Text;
            string Kommentar = textBoxkommentar.Text;

in die SQL Datenbank eizulesen
ein Codeansatz wäre sehr hilfreich

Danke im Vorraus
 
Mein Problem liegt darin die ausgelesen Daten in die Datenbank mittels insert befehlen zu speichern.
der inster befehl ist nicht das problem ich weiss nur nicht wie ich diesen in den code einbaun kann bzw wie ich in ausführen kann oder dergleichen
wie gesagt ich bin Programmieranfänger und kenne mich noch nit wirklich gut aus mit dieser materie
 
Du hast jetzt 3 Mal das gleich erzählt, aber immer noch nicht gesagt, wo der Fehler (Fehlermeldungen, ...) in deinem Code ist.

Das du Programmier-Anfänger bist ist ok. Jeder hat mal angefangen. Aber wenn man Hilfe braucht, sollte man sein Problem schildern können. Wie oben bereits geschrieben, wirst du von mir nicht den kompletten Code bekommen (willst du ja auch nicht :) ). Du solltest aber Lernen, dein Problem zu beschreiben. Lies dein Frage vor dem Senden einfach nochmal in Ruhe durch, versetze dich in die Lage des Gegenüber und stell dir die Frage "Kann ich mit dem, was da steht etwas anfangen und verstehe, was der Autor mir sagen will?"

Back to Topic
In der MSDN gibts ein Beispiel, was du dir wahrscheinlich schon angeschaut hast. Geh anhand diese Beispiels vor und mach nach und nach die Anpassungen für dein Szenario.
http://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqldataadapter.insertcommand.aspx
 
Mei problem ist das ich keine fehlermeldung bekomme :/
allerdings muss trotzdem irgendwo in meinem cod ein fehler oder dergleichen sein so das es nicht funktioniert

Die einzige fehlermeldung die ich bekomme ist das er connection nicht kennt
Code:
 SqlCommand command = new SqlCommand("INSERT INTO visitor_database (first_name, last_name, fkcategory) " + "VALUES (@first_name, @last_name, @fkcategory)", connection);

Fehlermeldung: connection ist im aktuellen kontext nicht verfügbar allerdings habe ich dies schon festgelegt habe

Code:
public void Form1_Load_1(object sender, EventArgs e)
       {
           try
           {
               string connectionString = "SERVER=DAUTSQL01.fremont.lamrc.net; Database=Visitors; User ID=VisitorDB; Password=9AbU5ApHa;";
               SqlConnection connection = new SqlConnection(connectionString);
               connection.Open();
           }
           catch
           {
               MessageBox.Show("Es besteht keine Verbindung zur Datenbank");
           }   
       }


Hier mei code Ich bekomme die catch-Meldung nicht und es wird auch nichts in die Datenbank gespeichert


Code:
public void buttonSpeichern_Click(object sender, EventArgs e)
        {
            //auslesen der Eingabe#
           
            string Vorname = textBoxVorname.Text;
            string Nachname = textBoxNachname.Text;
            string Ankunft = Convert.ToString(dateTimePickerAnkunft);
            string Grund = comboBoxGrund.Text;
            string Kommentar = textBoxkommentar.Text;


            try
            {
                // Create the InsertCommand.
                SqlCommand command = new SqlCommand("INSERT INTO visitor_database (first_name, last_name, fkcategory) " + "VALUES (@first_name, @last_name, @fkcategory)");

                // Add the parameters for the InsertCommand.
                command.Parameters.Add("@first_name", SqlDbType.VarChar, 75, Vorname);
                command.Parameters.Add("@last_name", SqlDbType.VarChar, 75, Nachname);
                command.Parameters.Add("@fkcategory", SqlDbType.Int, 4, "1");
            }
            catch
            {
                MessageBox.Show("sfda");
            }
 
Zurück