ConnDB conn = new ConnDB();        string sjbh;        string sql = "select max(SJBH) from T_SJZL Where SJLX = '零售商'";
        SqlDataReader dr = conn.datareader(sql);
        if (dr.Read())
        {
            //不足四位左补0
            int tmp = dr.GetInt32(0)+1;
            sjbh = tmp.ToString().PadLeft(4,'0');
        }
        else
        {
            sjbh = "0001";
        }
        dr.Close();老是提示“在没有任何数据时进行无效的读取尝试。 ”
真的是无语了!数据库里面明明一条记录也没有,却总是要进到            //不足四位左补0
            int tmp = dr.GetInt32(0)+1;
            sjbh = tmp.ToString().PadLeft(4,'0');请教高手们!

解决方案 »

  1.   


     if (dr.Read())
           换成if(dr.HasRows) 试试。。
      

  2.   


    参考资料

    private static void ReadOrderData(string connectionString)
    {
        string queryString =
            "select max(SJBH) from T_SJZL Where SJLX = '零售商'";    using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            SqlCommand command =
                new SqlCommand(queryString, connection);
            connection.Open();        SqlDataReader reader = command.ExecuteReader();        // Call Read before accessing data.
            while (reader.Read())
            {
                Console.WriteLine(String.Format("{0}, {1}",
                    reader[0], reader[1]));
            }        // Call Close when done reading.
            reader.Close();
        }
    }
      

  3.   


            ConnDB conn = new ConnDB();        string sjbh = "0001";        string sql = "select Max(SJBH) from T_SJZL Where SJLX = '零售商'";
            SqlDataReader dr = conn.datareader(sql);
            if (dr.Read())
            {
                //不足四位左补0
                if (!dr.IsDBNull(0))//多加了这一句
                {
                    int tmp = Int32.Parse(dr.GetString(0)) + 1;
                    sjbh = tmp.ToString().PadLeft(4, '0');
                }
            }
            dr.Close();代码修改了一下,成功了!没有用楼上的方法,我觉得好像跟我之前用的没什么区别。就是把IF换成While
      

  4.   

    我觉得是conn.datareader()这个方法的问题
      

  5.   

    或者你可以这么试试
    string sql = "select count(SJBH) from T_SJZL Where SJLX = '零售商'";