高手帮一下
假如只select出一条记录
那么.read()会返回一个什么类型的值呢可不可以用if(dr.Read()):
SqlCommand cmd = new SqlCommand("select count(LocationID) from WhsLocation where WarehouseID =" + sWarehoseID,conn);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if(dr.Read())
          {}

解决方案 »

  1.   

    返回bool型. 可以.if (dr.Read())
    {
      int n = dr.GetInt32(0);
    }
      

  2.   

    如果只有一个值, 用以下方法更好:int n = (int)cmd.ExecuteScalar();
      

  3.   

    如果只有一个值, 用以下方法更好:int n = (int)cmd.ExecuteScalar();
    ----------------------------------------
    这个int n返回的是什么值呢?
    是第一行第一列的值吗?(也就是说是不是count(LocationID)的值?)
      

  4.   

    DataReader.Read返回一个BOOL值,为TRIE时,表示当前已经获取了一行数据,你可以用dr["name"]来获取列名为"name"的值。获的是一个object对象,需要自己显示转换一下。
    if (dr.Read())
    {
    string myName = (string)dr["name"];
    }
    dr.Close(); // 不要忘记关闭哦!
      

  5.   

    请看 msdn 上的说明:SqlCommand.ExecuteScalar 方法执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。备注使用 ExecuteScalar 方法从数据库中检索单个值(例如一个聚合值)。与使用 ExecuteReader 方法,然后使用 SqlDataReader 返回的数据执行生成单个值所需的操作相比,此操作需要的代码较少。典型的 ExecuteScalar 查询可以采用类似于下面的 C# 示例的格式:cmd.CommandText = "select count(*) from region";
    Int32 count = (int32) cmd.ExecuteScalar();