2012-08-09 55 views
0

我試圖用OleDbDataReader但它返回此錯誤返回錯誤「沒有數據的行列中存在」:通過「OleDbDataReader」

No data exists for the row column 

我使用的是Access數據庫。任何人都可以幫助我找出這個錯誤的根源嗎?這裏是我的代碼:

private void UpdateStudent_Load(object sender, EventArgs e) 
{ 
    OleDbDataAdapter da = new OleDbDataAdapter(); 

    da.SelectCommand = new OleDbCommand(
     "select * from Students where SID= " + U_ID, con); 

    con.Open(); 
    OleDbDataReader rd = da.SelectCommand.ExecuteReader(); 

    if (rd.Read()) 
    { 
     //txtId.Text = U_ID; 
     txtId.Text = rd["SID"].ToString(); 
    } 

    rd.Close(); 
} 
+2

嘗試考慮實施'使用()'語句和try/catch。此外,您可能希望將您的代碼更改爲if(rd.HasRows){while(rd.Read()){do stuff}}'。這些建議不會解決你的實際問題,雖然 – Dan 2012-08-09 14:50:43

回答

0

您可以使用此代碼

var queryString = "select * from Students where SID= " + U_ID, con; 
using (OleDbConnection connection = new OleDbConnection(connectionString)) 
{ 
    OleDbCommand command = new OleDbCommand(queryString, connection); 
    connection.Open(); 
    OleDbDataReader reader = command.ExecuteReader(); 

    while (reader.Read()) 
    { 
     txtId.Text = reader["SID"].ToString(); 
    } 
    reader.Close(); 
} 
+0

現在它不會給我錯誤沒有「數據存在的行列」 – user1587902 2012-08-09 18:46:31

+0

因爲你的查詢結果是空的,如果你在數據庫中嘗試這個查詢,你的查詢返回null,肯定user1587902 – 2012-08-09 18:47:20

+0

,但它跳過while循環,立即去reader.close(); – user1587902 2012-08-09 18:49:39