2012-03-29 104 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)); } 

現場,我試圖讓具有值。我試圖顯示該值,但是當我執行該事件時,沒有任何反應。

編輯

好吧,我改變SelectedValue解決的問題SelectedItem

+0

如果沒有反應,然後reader.Read()可能返回false因爲結果集是空的解決了這個問題。你在哪裏設定'@ subj'的值?你在做什麼? – rsbarro 2012-03-29 02:39:25

+0

這來自用戶輸入。 queryReqYear.Parameters.AddWithValue(「@ subj」,viewStudents_subj.SelectedValue);我可以向你保證,我查詢的領域不是空的。它的值爲3. – Nath 2012-03-29 02:40:21

+0

'reader.Read()'返回「true」還是「false」?如果它返回「false」,那麼你的查詢沒有返回任何記錄。另外,我沒有說場地是空的,我說結果集是空的。 – rsbarro 2012-03-29 02:44:52

回答

0

好吧,我改變SelectedValueSelectedItem

0

嘗試把單引號括起來等等在你的SQL語句。

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

編輯:它工作,如果我這樣做。但是當使用Parameters.AddWithValue時,結果是空的。 – Nath 2012-03-29 02:45:55

0

你沒有得到任何異常,只是沒有結果?

你可能想測試一下把這個變成一個變量,然後又做了代碼休息,是這樣的:

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

此外,你應該測試在SQL客戶端中的SQL代碼,看看你得到的那裏的結果正確。我懷疑你的SQL是問題,而不是C#代碼。

+0

我得到的結果,如果我直接把一個值的WHERE subj_code。但是當我使用Parameters.AddWithValue時,它返回空。 – Nath 2012-03-29 02:47:08

1

嘗試Text屬性:

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