-
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 überlassenGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
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 :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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
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
Geändert von krokev (23.11.11 um 10:27 Uhr)
-
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Ich suche einfach die einfachste variante um
Code :1 2 3 4 5 6
//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
-
Hi
Einen Codeansatz hast du! Was genau bzw. wo genau ist denn dein Problem? Das hast du immer noch nicht beschrieben!Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
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/libr...rtcommand.aspxGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
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 :1
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 :1 2 3 4 5 6 7 8 9 10 11 12 13
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 :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
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"); }
-
Hi
Wo ist denn das ExecuteNonQuery jetzt hin?
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Das ist in einer anderen Klasse
Muss das auch hier beim aufruf des inserts sein****
Ist der rest in ordnung? bzw sind noch andere Fehler in meinem Code?
-
Du legst hier das Command-Objekt an. Führst den Command aber nicht aus. Wenn du an anderer Stelle das Execute des Command aufrufst, wird dies auch ein anderer Command sein!
Hast du dir das Beispiel in der MSDN angeschaut und es auf deine Umgebung adaptiert?Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
hab das nun so probiert:
wie geht der aufruf?
ist das richtig****
Code :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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
public static int ExecuteNonQuery(string sql) { string connectionString = "SERVER=DAUTSQL01.fremont.lamrc.net; Database=Visitors; User ID=VisitorDB; Password=9AbU5ApHa;"; 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; } finally { connection.Close(); } } public void buttonSpeichern_Click(object sender, EventArgs e) { string connectionString = "SERVER=DAUTSQL01.fremont.lamrc.net; Database=Visitors; User ID=VisitorDB; Password=9AbU5ApHa;"; SqlConnection connection = new SqlConnection(connectionString); InsertBesucher(connection); } public static SqlDataAdapter InsertBesucher(SqlConnection connection) { SqlDataAdapter adapter = new SqlDataAdapter(); SqlCommand command = new SqlCommand("INSERT INTO visitor_database (first_name, last_name, screening_result, license_plate, personal_document, fknation, fkcompany, fkcategory) " + "VALUES (@first_name, @last_name, @screening_result, @license_plate, @personal_document, @fknation, @fkcompany, @fkcategory)", connection); command.Parameters.Add("@first_name", SqlDbType.VarChar, 75, "Vorname"); command.Parameters.Add("@last_name", SqlDbType.VarChar, 75, "Nachname"); command.Parameters.Add("@screening_result", SqlDbType.Bit, 1); command.Parameters.Add("@license_plate", SqlDbType.VarChar, 50, "Kennzeichen"); //command.Parameters.Add("@personal_document", SqlDbType.VarBinary, max); command.Parameters.Add("@fknation", SqlDbType.Int, 2); command.Parameters.Add("@fkcompany", SqlDbType.Int, 2); command.Parameters.Add("@fkcategory", SqlDbType.Int, 2); return adapter; }
-
Hi
Nochmal: Du erzeugst einen weiteren SqlCommand, der andere Informationen enthält, als der in "InsertBesucher"! Ruf da ExecuteNonQuery auf!
Und ich geb dir nochmal den Hinweis mit dem Beispiel in der MSDN! Mach dir eine kleine Konsolenanwendung, die diese Beispiel enthält und pack es dann in deine WinForms Anwendung!Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Ich habe das schon drei mal probiert und keine ahnung wo ich einen weiteren SQLCommand erzeuge**** bzw was ich verändern muss?
Ähnliche Themen
-
Die GUI einer Windows Form Application aus einr MySql Datenbank befüllen
Von krokev im Forum .NET DatenverwaltungAntworten: 23Letzter Beitrag: 25.10.11, 18:14 -
Umgang der Daten aus einer Derby Datenbank in einer Visual Web JSF Application
Von melly_ im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 0Letzter Beitrag: 04.03.09, 14:23 -
Aus einer Application heraus eine neue Application starten
Von Lautsprecher im Forum JavaAntworten: 2Letzter Beitrag: 31.07.07, 14:13 -
Daten aus einer Form in die Access-Datenbank eintragen
Von Meitli im Forum ASPAntworten: 3Letzter Beitrag: 28.06.05, 15:03 -
Daten aus einer Form in die Access-Datenbank eintragen
Von Meitli im Forum ASPAntworten: 4Letzter Beitrag: 23.06.05, 08:35



2Danke

Zitieren



Login





