Hallo,
ich habe eine Textbox in die ich einen Projektname eingeben kann. Während der Eingabe soll geprüft werden ob dieser Name bereits in der DB existiert, falls ja soll die Beschreibung übernommen werden.
Bisher habe ich:
public bool isExisting(string table, string field, string value)
{
int result = 0;
// Create connection here
SqlConnection con = ParentWindow.DBConnection;
SqlCommand thisCommand = ParentWindow.DBConnection.CreateCommand();
string s = "SELECT Bezeichnung FROM Projekt WHERE Bezeichnung= '"+ProjektName.Text+ "' ";
//how to add parameters
thisCommand.Parameters.AddWithValue("value", value);
result = (int)thisCommand.ExecuteScalar();
if (result <= 0)
return false;
else
return true;
}
wäre für eure Hilfe sehr Dankbar
Hallo Nurci
Und was ist deine Frage?
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
😃
wie wende ich die Methode auf die Eingabe in die Textbox ein? Also während ich den Namen eingebe, soll geprüft werden ob dieser Name schon existiert
also ich hab eine Click-Method zum speichern eines neuen Projekts,
private void projektAnlegen(object sender, RoutedEventArgs e)
{
SqlConnection con = ParentWindow.DBConnection;
if (Projektbeschreibung.Text.Length > 0 && ProjektName.Text.Length > 0)
{
string insertProjekt = @"insert into Projekt
(Beschreibung, Bezeichnung) OUTPUT INSERTED.ID
Values('" + Projektbeschreibung.Text + "','" + ProjektName.Text + "')";
SqlCommand scmd = new SqlCommand(insertProjekt, con);
//in DB einfügen und generierte ID auslesen
int newprojektid = (int) scmd.ExecuteScalar();
MessageBox.Show("Ein Projekt angelegt");
ProjektName.Text = string.Empty;
Projektbeschreibung.Text = string.Empty;
ParentWindow.mainContentControl.Content = new Taetigkeiten(ParentWindow, newprojektid);
}
else
{
MessageBox.Show("Bitte Projektnamen und Beschreibung eingeben");
}
}
dort müsst ich beim Speichern die Überprüfung machen
wie wende ich die Methode auf die Eingabe in die Textbox ein?
Indem du sie aufrufst?
Dein Code sieht allerdings noch ziemlich buggy aus.
Du solltest Parameter verwenden statt Strings direkt ins SQL zu schreiben.
isExisting ist kompletter Murks, wenn ich das direkt sagen darf.
Den Methodenparameter table nutzt du nirgends. Mit value erstellst du einen SqlParameter der aber auch nirgends verwendet wird.
Du gibst aus dem SQL "Bezeichnung" zurück und castest das dann als int. BUMM!
Und letztendlich macht es nicht viel Sinn eine Bezeichnung zurückzugeben die gleich einem schon im voraus bekannten Wert ist. Sollte das ein COUNT(*) sein statt der Bezeichnung?
Danke für deine Antwort CHilic,
du hast Recht, die Methode ist echt Murks.
Ich habe das Problem so gelöst:
thisCommand.CommandText = @"SELECT Beschreibung FROM Projekt WHERE Bezeichnung = @ProjektName ";
thisCommand.Parameters.AddWithValue("ProjektName", ProjektName.Text);
SqlDataReader thisReader = thisCommand.ExecuteReader();
if (thisReader.Read())
{
Projektbeschreibung.Text = (string)thisReader["Beschreibung"];
MessageBox.Show("Projektname ist bereits in Verwendung");
}
else
....
Aber so soll ich das nicht lösen, da ProjektName ein Unique ist, und ich die Fehlermeldung aus der DB ausgeben lassen soll. Jetzt darf ich erst mal wieder googlen, da ich vorher fast nie was mit DB gemacht hab, geschweigeden einen Query geschrieben 😃
Danke
Schau Dir Repositories an und fang nicht damit an, dass Du DB-Abfragen in die GUI-Logik einbaust. Das ist ein absolutes NoGo und ein fataler Fehler aus Architektursicht.
Kapsel die DB Abfrage ab; Kapsel die Logik und die UI.
Vielleicht solltest Du Dir auch noch mal MVVM mit WPF genauer anschauen, denn das was Du machst ist alles andre als gut wartbar und modular.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hi Nurci,
Ich darf leider kein MVVM benutzen, was ich sehr gern getan hätte
Das mußt du mal näher erklären! Wer sollte denn soetwas verbieten und warum? Wie sollte man sonst vernünftige Anwendungen mit WPF entwickeln?
Christian
Weeks of programming can save you hours of planning
Hi Nurci,
Ich darf leider kein MVVM benutzen, was ich sehr gern getan hätte
Das mußt du mal näher erklären! Wer sollte denn soetwas verbieten und warum? Wie sollte man sonst vernünftige Anwendungen mit WPF entwickeln?
Christian
Die Naivität der glücklichen, die nur in normalen Firmen gearbeitet haben. 😉
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Nein, die Naivität derjenigen die bei solchen Vorgaben dann Frickeln statt die Architektur dann anders zu nennen.