sql server里
CREATE PROCEDURE SalesByCategory
AS
SELECT  RegionID,RegionDescription FROM Region
GO
-------
SqlConnection nwindConn = new SqlConnection(myConnString);
SqlCommand salesCMD = new SqlCommand("SalesByCategory", nwindConn);
salesCMD.CommandType = CommandType.StoredProcedure;
nwindConn.Open();
SqlDataReader myReader = salesCMD.ExecuteReader();
Console.WriteLine("{0}, {1}", myReader.GetInt32(0), myReader.GetName(1));
while (myReader.Read())
{
Console.WriteLine("{0}, ${1}", myReader.GetString(0), myReader.GetDecimal(1));
}------
错误信息
System.InvalidOperationException: 在没有任何数据时进行无效的读取尝试。
   at System.Data.SqlClient.SqlDataReader.PrepareSQLRecord(Int32 i)

解决方案 »

  1.   

    SqlConnection nwindConn = new SqlConnection(myConnString);
    SqlCommand salesCMD = new SqlCommand("SalesByCategory", nwindConn);
    salesCMD.CommandType = CommandType.StoredProcedure;
    nwindConn.Open();
    SqlDataReader myReader = salesCMD.ExecuteReader();  //改为salesCMD.ExecuteNoneQuery();  
    Console.WriteLine("{0}, {1}", myReader.GetInt32(0), myReader.GetName(1));
    while (myReader.Read())
    {
    Console.WriteLine("{0}, ${1}", myReader.GetString(0), myReader.GetDecimal(1));
    }
      

  2.   

    ExcuteReader方法:返回一个DataReader对象
    ExcuteScalar方法:放回单个值,比如平均值、最大值等SQL语句的函数。
    ExcuteNonQuery方法:执行不需要返回结果的命令,如插入、删除等操作。
      

  3.   

    还是不明白
    用ExcuteReader方法,返回一个DataReader对象..为什么不对?非要改成 ExcuteNonQuery