2012-03-29 19 views
0

私はC#でMySQLデータベースから値を取得したいプログラムを作成しました。DataReaderは値を返しませんか?

私のコードは次のとおりです。

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


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

それから私は、DataReaderの

MySqlDataReader reader; 
reader = queryReqYear.ExecuteReader(); 

を使用し、私は値を取得しよう:

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

私が取得しようとしている場の値を持ちます。私はその値を表示しようとしていますが、イベントを実行すると何も起こりません。

オーケー

EDITは、私がSelectedItem

+0

SelectedValueを変更することで問題を解決しました。 '@ subj'の値はどこで設定していますか?あなたはそれを何に設定していますか? – rsbarro

+0

これはユーザーからの入力です。 queryReqYear.Parameters.AddWithValue( "@ subj"、viewStudents_subj.SelectedValue);私は照会しているフィールドが空ではないことを保証することができます。値は3です。 – Nath

+0

'reader.Read()'は 'true'または' false'を返しますか? 'false'を返すと、クエリはレコードを返しません。また、フィールドが空であるとは言いませんでしたが、結果セットは空であると言いました。 – rsbarro

答えて

0

大丈夫、私は何も、その後reader.Readを起こらない場合、結果セットが空であるため、おそらく偽を返して()SelectedItem

0

SelectedValueを変更することで問題を解決し、あなたのSQL文で何とか周りの単一引用符を入れてみてください。

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

編集:私はそれが好きならそれは動作します。しかし、Parameters.AddWithValueを使用すると、結果は空です。 – Nath

0

あなたには例外がありません。結果はありませんか?あなたは、その後、コードブレークを作り、変数にこれを入れてテストするような何かしたいことがあり

:また

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

を、あなたが取得するかどうかを確認するためにSQLクライアントであなたのSQLコードをテストする必要があります適切な結果がそこにあります。私はあなたのSQLが問題ではなく、C#コードではないかと考えています。

+0

WHERE subj_codeに値を直接置くと結果が得られます。しかし、私がParameters.AddWithValueを使用すると、空を返します。 – Nath

1

Textプロパティ試してみてください。

queryReqYear.Parameters.AddWithValue("@subj", viewStudents_subj.Text); 
関連する問題