2012-10-04 12 views
-1

在ASP.NET中使用C#执行以下代码时,出现“没有数据存在行/列”的异常。行/列中没有数据,但存在于sql ce中

private void updateGrnItemDetails(object sender, EventArgs e) 
    { 
     txtItemNameGrnUpdate.Enabled = true; 
     txtItemCostGrnUpdate.Enabled = true; 
     txtItemColorGrnUpdate.Enabled = true; 
     String s = cmbGrnUpdateItemCode.SelectedItem.ToString(); 
     MessageBox.Show(s); 
     sqlQuery2 = @"SELECT * FROM item WHERE (itemType ='"+cmbGrnUpdateItemType.SelectedText+"')"; 
     comm = new SqlCeCommand(sqlQuery2, con_data); 
     try 
     { 
      con_data.Open(); 
      dr = comm.ExecuteReader(); 
      MessageBox.Show(dr.GetString(0)); 
      while (dr.Read())//reading data from rows 
      { 
       txtItemNameGrnUpdate.Text += dr["itemName"].ToString(); 
       txtItemColorGrnUpdate.Text += dr["itemColor"].ToString(); 
       txtItemCostGrnUpdate.Text += dr["itemCost"].ToString(); 
      } 
     } 
     catch(Exception ex) 
     { 
       MessageBox.Show(ex.Message); 
     } 
     finally 
     { 
      con_data.Close(); 
     } 
    } 

我使用Visual Studio 2010和SQL精简版。我正在使用请指导我如何解决此问题。

+0

前'SqlDataReader'你应该检查它是否有'.HasRows'的行 - 无论哪种方式,你应该检查是否该列ns在select语句中。 –

+0

你能更具体地说明哪一行代码会抛出异常吗? – chris

回答

0

可以更换* with columns name

sqlQuery2 = "SELECT itemCost, itemName, itemColor FROM item WHERE (itemType ='"+cmbGrnUpdateItemType.SelectedText+"')"; 

我建议你使用

sqlQuery2 = "SELECT itemCost, itemName, itemColor FROM item WHERE itemType = @ParameterName"; 

comm .Parameters.AddWithValue("@ParameterName", cmbGrnUpdateItemType.SelectedText); 
0

你缺少read调用,如果它是一个你做的GetString()

while(dr.Read()) 
{ 
    String res = dr.GetString(0); 
    //... 
} 
相关问题