Laden...

string als SelectCommand Fehlermeldung

Erstellt von Deletemaster vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.093 Views
Deletemaster Themenstarter:in
155 Beiträge seit 2005
vor 18 Jahren
string als SelectCommand Fehlermeldung

Hallo zusammen:

bei meinem SelectCommand:


lbl_quelle.Text = cb_quelle.SelectedItem.ToString();

string str_quellenname = lbl_quelle.Text.ToString();

OdbcCommand cmd_count_Auftrag = new OdbcCommand("SELECT count(status) AS Anzahl_A FROM [table] WHERE [feld]='" + str_quellenname +" ' AND status = '" + str_Status_A + "'", conn);

funktioniert alles reibungslos. // (str_quellenname = comboBoxSelectedItem)

da ich aber mit Werten weiterarbeiten möchte habe ich folgende Möglichkeit versucht:

string str_Anzahl_A = "SELECT count(status) AS Anzahl_A FROM winners49 WHERE kennung='" + str_quellenname +" ' AND status = '" + str_Status_A + "'";
OdbcCommand cmd = new OdbcCommand(str_Anzahl_A, conn);

die mir folgende Fehlermeldung bringt:

Das Eingabezeichen hat das Falsche Format

da ich mit den Werten aber Berechnungen durchführen möchte brauche ich diese Werte.

Wo habe ich hier bitte den Fehler gemacht?

Danke für Eure Hilfe

F
10.010 Beiträge seit 2004
vor 18 Jahren

Ist kennung eine Zahl?

D
155 Beiträge seit 2005
vor 18 Jahren

Sorry aber echt mal:

Siehs mal von der Perspektive:

Ich bin ein Nutzer der das Programm möglichst für meinen illegalen Zwecke nutzen möchte. Wenn ich die Möglichkeit habe durch ein Textfeld entweder str_quellenname oder str_Status_A einzugeben würde ich erstmal folgendes eingeben:

''; DELETE FROM [table]; UPDATE t_Users SET Password = 'evilhacker' WHERE Username = 'Admin'--

Und nu? Die Zeichen ('') beenden den ersten SQL Befehl. Dann kommt der 2te den du nicht erwartet hast: "DELETE FROM [table];". Damit ich auch noch gleich Admin bin setze ich das Passwort auf 'evilhacker' (übrigens hätte ich auch andere Tabellen nehmen können). Schließlich kommentiert "--" den Rest deines SQL aus.

Nu stehste wohl auf'm Schlauch. NEIN ich sage jetzt keine Lösung aber du solltest hier echt mal schaun, wie viele so'n Fehler machen! Sonst such mal nach SQL INJECTION

Deletemaster Themenstarter:in
155 Beiträge seit 2005
vor 18 Jahren

@FZelle
Nein kennung ist keine Zahl!
kennung ist ein Feld in der Tabelle vom Typ Text.

die kennung wird per sql-query aus der db gelesen und in einer comboBox angezeigt

der inhalt des selektierten wertes wird einem string übergeben.

Merkwürdig ist nur, das bei beiden sql-strings das gleiche steht, nur verschiedene resultate bringt.

F
10.010 Beiträge seit 2004
vor 18 Jahren

Also für mich sehen die beiden deutlich unterschiedlich aus.

Einmal steht da "FROM [table]" und das andere mal "FROM winners49"