Sql Abfrage mit mehreren Bedingungen
Sql Abfrage mit mehreren Bedingungen
Hey zusammen!
Mein Problem ist folgendes: Und zwar bin ich dabei ein Programm mit Einlogg-System zu schreiben und ich möchte nun, dass mein Programm aus meiner Datenbank liest ob "value" und die "produktID" richtig sind. Wenn beides der Fall ist also die Value richtig ist und die ProduktID 26 ist soll das Programm somit auf die nächste Form geleitet werden. Wenn dies nicht der Fall ist soll eine Fehlermeldung herausgegeben werden. Mein code ist folgender funktioniert jedoch nicht; weiß wer vielleicht wie er richtig geht ?
PS: Die Connection zum Server ist schon hergestellt und funktioniert auch.
Mein Problem ist folgendes: Und zwar bin ich dabei ein Programm mit Einlogg-System zu schreiben und ich möchte nun, dass mein Programm aus meiner Datenbank liest ob "value" und die "produktID" richtig sind. Wenn beides der Fall ist also die Value richtig ist und die ProduktID 26 ist soll das Programm somit auf die nächste Form geleitet werden. Wenn dies nicht der Fall ist soll eine Fehlermeldung herausgegeben werden. Mein code ist folgender funktioniert jedoch nicht; weiß wer vielleicht wie er richtig geht ?
PS: Die Connection zum Server ist schon hergestellt und funktioniert auch.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Sql Abfrage mit mehreren Bedingungen
Hallo Paul und Willkommen im Forum.
Ein "es funktioniert nicht" ist immer etwas nutzlos, da ich nicht weiß, was es machen soll und was es stattdessen tatsächlich macht. Du kannst auch Source-Code als solchen hier Posten anstatt eines Screen-Shots, dass macht es einfacher.
Ganz grob würde ich aber sagen, dass dein
nicht auf den Text deiner Text Box zugreift, sondern nur tatsächlich diesen String in die SQL query schreibt, schau dir doch mit dem Debugger den Text an.
Dann noch ein Paar anmerkungen: Du übernimmst den Text direkt aus deiner TextBox, das sollte man nicht machen, da es SQL-Injection Angriffe erlaubt. Du solltest hier "Escaping" nutzen. Ein besserer Ansatz und evt auch eine Lösung ür dein Problem findest du hier: https://stackoverflow.com/questions/211 ... dwithvalue
Ist
nicht sowie schon int? Kannst du dir nicht das Konvertieren zu einem String und dann zurück zu int sparen?
Warum ist "i" überhaupt ein Klassenmember? Das ist schlechter Stil und sorgt für Probleme.
Ein "es funktioniert nicht" ist immer etwas nutzlos, da ich nicht weiß, was es machen soll und was es stattdessen tatsächlich macht. Du kannst auch Source-Code als solchen hier Posten anstatt eines Screen-Shots, dass macht es einfacher.
Ganz grob würde ich aber sagen, dass dein
Code: Alles auswählen
'TextBox1.Text'
Dann noch ein Paar anmerkungen: Du übernimmst den Text direkt aus deiner TextBox, das sollte man nicht machen, da es SQL-Injection Angriffe erlaubt. Du solltest hier "Escaping" nutzen. Ein besserer Ansatz und evt auch eine Lösung ür dein Problem findest du hier: https://stackoverflow.com/questions/211 ... dwithvalue
Ist
Code: Alles auswählen
dt.Rows.Count
Warum ist "i" überhaupt ein Klassenmember? Das ist schlechter Stil und sorgt für Probleme.
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
Re: Sql Abfrage mit mehreren Bedingungen
cloidnerux hat geschrieben:Hallo Paul und Willkommen im Forum.
Ein "es funktioniert nicht" ist immer etwas nutzlos, da ich nicht weiß, was es machen soll und was es stattdessen tatsächlich macht. Du kannst auch Source-Code als solchen hier Posten anstatt eines Screen-Shots, dass macht es einfacher.
Ganz grob würde ich aber sagen, dass deinnicht auf den Text deiner Text Box zugreift, sondern nur tatsächlich diesen String in die SQL query schreibt, schau dir doch mit dem Debugger den Text an.Code: Alles auswählen
'TextBox1.Text'
Dann noch ein Paar anmerkungen: Du übernimmst den Text direkt aus deiner TextBox, das sollte man nicht machen, da es SQL-Injection Angriffe erlaubt. Du solltest hier "Escaping" nutzen. Ein besserer Ansatz und evt auch eine Lösung ür dein Problem findest du hier: https://stackoverflow.com/questions/211 ... dwithvalue
Istnicht sowie schon int? Kannst du dir nicht das Konvertieren zu einem String und dann zurück zu int sparen?Code: Alles auswählen
dt.Rows.Count
Warum ist "i" überhaupt ein Klassenmember? Das ist schlechter Stil und sorgt für Probleme.
Danke erstmal für deine schnelle Antwort.
hier nochmal der code:
Code: Alles auswählen
i = 0;
con.Open();
MySqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT value, productID FROM `shop1_serial` where value = 'TextBox1.Text' AND productID = '26'";
cmd.ExecuteNonQuery();
DataTable dt = new DataTable();
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
da.Fill(dt);
i = Convert.ToInt32(dt.Rows.Count.ToString());
if ( i == 0)
{
this.Hide();
Form fm = new Form2();
fm.Show();
}
else
{
MessageBox.Show("Please check your Username and Password");
}
con.Close();
Gibt es nicht noch eine andere Methode mein Programm vor SQL-Angriffen zu schützen ?
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Sql Abfrage mit mehreren Bedingungen
So Furchtbar kompliziert ist es ja nicht:Gibt es nicht noch eine andere Methode mein Programm vor SQL-Angriffen zu schützen ?
Code: Alles auswählen
cmd.CommandText = "SELECT value, productID FROM `shop1_serial` where value = @Value AND productID = @ID";
cmd.Parameters.AddWithValue("@Value", TextBox1.Text);
cmd.Parameters.AddWithValue("@ID", 26);
cmd.ExecuteNonQuery();
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
Re: Sql Abfrage mit mehreren Bedingungen
Der Code sieht jetzt so aus:
funktioniert aber leider immer noch nicht
Code: Alles auswählen
i = 0;
con.Open();
MySqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT value, productID FROM `shop1_serial` where value = @Value AND productID = @ID";
cmd.Parameters.AddWithValue("@Value", TextBox1.Text);
cmd.Parameters.AddWithValue("@ID", 26);
cmd.ExecuteNonQuery();
if (i == 0 && i == 26)
{
MessageBox.Show("Please check your Username and Password");
}
else
{
this.Hide();
Form fm = new Form2();
fm.Show();
}
con.Close();
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Sql Abfrage mit mehreren Bedingungen
Weil Du etwas bestimmtes erwartest und stattdessen passiert an welcher Stelle was?Paul9981 hat geschrieben:Der Code sieht jetzt so aus:
funktioniert aber leider immer noch nicht
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Sql Abfrage mit mehreren Bedingungen
ich werde auf die 2te form geleitet wenn ich login drücke..auch wenn nichts im Textfeld steht
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Sql Abfrage mit mehreren Bedingungen
Code: Alles auswählen
if (i == 0 && i == 26)
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
Re: Sql Abfrage mit mehreren Bedingungen
Ich möchte ja, dass die nächste Form geöffnet wird nur wenn TextBox1.Text richtig ist und die Value 26 ist, ansonsten soll die Fehlermeldung kommen
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Sql Abfrage mit mehreren Bedingungen
Da steht, wenn i gleich 0 ist und i gleich 26 ist. Da hast Du Schrödingers Katze in den Sack gepackt. Da steht nix von Textbox 1.
Computer machen, was Du ihnen sagst. Genau das.
Computer machen, was Du ihnen sagst. Genau das.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.