sqldatareader向前只读,如果判断if(my.read())时,指针就向前移动了一条了,不要判断或用dataset

解决方案 »

  1.   

    不可以你发现第一条记录不见了是不可能的是你代码有问题!
    你一定要先看看是不为空才能用Read()这个方法!
      

  2.   

    比如你要先用ExceuteQuery()这个方法,如果返回值大于0就用Read()这个方法!
      

  3.   

    ok,知道了,但是我如何判断是否为空呢(不用read)????
      

  4.   

    还有,我return sqldatareader,那么我如何关闭该connection呢,.net能自动关闭吗,如何
    手动关闭呢???
      

  5.   

    mydatareader = mycommand.ExecuteReader(CommandBehavior.CloseConnection);
    这么写系统自动关闭
      

  6.   

    可以:
    DataTable cmicDt=new DataTable();
    SqlCommand cmicCmd=new SqlCommand("GetDateMoney",tempCn);
    cmicCmd.CommandType=CommandType.StoredProcedure;
    cmicCmd.Parameters.Add(new SqlParameter("@StartTime",SqlDbType.DateTime));
    cmicCmd.Parameters["@StartTime"].Value=tempStartTime;
    cmicCmd.Parameters.Add(new SqlParameter("@EndTime",SqlDbType.DateTime));
    cmicCmd.Parameters["@EndTime"].Value=tempEndTime;

    SqlDataAdapter cmicDa=new SqlDataAdapter(cmicCmd);
    cmicDa.Fill(cmicDt);
      

  7.   

    visualcpu(Banaler) :
    比如你要先用ExceuteQuery()这个方法,如果返回值大于0就用Read()这个方法!
    -->
    不懂,能否给个example!!!
      

  8.   

    给你我的代码public DataSet GetProduct(int smallclassID)
    {
    SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
    SqlDataAdapter myDataAdapter = new SqlDataAdapter("GetProduct",myConnection);
    myDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
    SqlParameter mySmallClassID = new SqlParameter("@smallclassID",SqlDbType.Int,4);
    mySmallClassID.Value = smallclassID;
    myDataAdapter.SelectCommand.Parameters.Add(mySmallClassID);
    DataSet myProduct = new DataSet();
    myDataAdapter.Fill(myProduct);
    return myProduct;
    }