2012-03-29 14 views
0

Ich schrieb ein Programm in C#, wo ich einen Wert von einer MySQL Datenbank bekommen wollte.DataReader gibt keinen Wert zurück?

Mein Code ist:

MySqlCommand queryReqYear = 
     new MySqlCommand(@"SELECT req_year FROM subjects_offered 
         WHERE subj_code= @subj", connectToDB.connection); 


queryReqYear.Parameters.AddWithValue("@subj", viewStudents_subj.SelectedValue); 

Dann benutze ich Datareader

MySqlDataReader reader; 
reader = queryReqYear.ExecuteReader(); 

Und dann versuche ich, den Wert zu erhalten:

while (reader.Read()) 
    { MessageBox.Show(reader.GetString(0)); } 

Das Feld Ich versuche zu bekommen hat einen Wert von . Ich versuche, diesen Wert anzuzeigen, aber wenn ich das Ereignis ausführe, passiert nichts.

EDIT

Okay, ich löste das Problem, indem SelectedValue-SelectedItem

+0

Ändern Wenn nichts reader.Read geschieht dann() ist wahrscheinlich falsch zurückkehrt, weil die Ergebnismenge leer ist. Wo setzt du den Wert von '@ subj'? Worauf stellen Sie es ein? – rsbarro

+0

Das ist von Benutzereingabe. queryReqYear.Parameters.AddWithValue ("@subj", viewStudents_subj.SelectedValue); Ich kann Ihnen versichern, dass das Feld, das ich abfrage, NICHT leer ist. Es hat einen Wert von 3. – Nath

+0

Gibt 'reader.Read()' '' '' '' '' '' zurück? Wenn es "false" zurückgibt, gibt Ihre Abfrage keine Datensätze zurück. Ich habe auch nicht gesagt, dass das Feld leer war, ich sagte, das Ergebnis ist leer. – rsbarro

Antwort

0

Okay, ich löste das Problem, indem SelectedValue-SelectedItem

0

Versuchen Sie setzen einfache Anführungszeichen um blah in Ihrer SQL-Anweisung zu ändern.

MySqlCommand queryReqYear = 
    new MySqlCommand(@"SELECT req_year FROM subjects_offered 
        WHERE subj_code= 'blah'", connectToDB.connection); 
+0

EDIT: Es funktioniert, wenn ich es so mache. Wenn Sie jedoch Parameter.AddWithValue verwenden, ist das Ergebnis leer. – Nath

0

Sie erhalten keine Ausnahmen, nur kein Ergebnis?

Möglicherweise möchten Sie diese in eine Variable testen, setzen, dann einen Code Pause machen, so etwas wie:

string testValue = reader.GetString(0); 
Console.WriteLine(testValue); 

Außerdem sollten Sie Ihren SQL-Code in einer SQL-Client testen, um zu sehen, ob Sie das bekommen richtige Ergebnisse dort. Ich vermute, dass Ihr SQL das Problem ist, nicht der C# -Code.

+0

Ich bekomme das Ergebnis, wenn ich WHERE subj_code direkt einen Wert gebe. Aber wenn ich Parameter.AddWithValue verwende, gibt es leer zurück. – Nath

1

versuchen Text Eigenschaft:

queryReqYear.Parameters.AddWithValue("@subj", viewStudents_subj.Text); 
Verwandte Themen