我有一条sql语句:"select count(xid) as xzs,sum(xrk) as rks,sum(xylfn) a fn from xinfo"
看教程说这样的命令应该用executescalar方法,可这个方法只返回一个对象,一个结果值,我的语句有3个返回结果哦,怎么解决这个问题?

解决方案 »

  1.   

    executescalar方法:在msdn解释是:执行查询,并返回查询所返回的结果集中第一行的第一列。所有其他的列和行将被忽略。所以这个方法不适当..
    你可以用.. SqlCommand.ExecuteNonQuery 方法,SqlCommand.ExecuteReader 方法 等方法..
    不太明白怎么用的话, 把这两个方法在msdn里搜,有例题的, 照着做吧..
      

  2.   

    Executescalar,ExecuteNonQuery,ExecuteReader 各自的用法各有特点,用哪个还看需求,没说一定要用哪个的。
    如果是要保存查询结果集,建议使用DataAdapter.Fill(tb_Name)将结果放入一个临时表中。Executescalar主要用来查询单个标量值;ExecuteNonQuery用于按行查询,常利用起HasRows属性如验证用户时;ExecuteNonQuery常用于删除,更新,插入等操作。
      

  3.   

    ExecuteNonQuery没有返回结果的,只有影响行数,不符合我的要求,只能用ExecuteReader ,这个该怎么把结果显示出来呢?
      

  4.   

    ExecuteNonQuery没有返回结果的,只有影响行数,不符合我的要求,只能用ExecuteReader ,这个该怎么把结果显示出来呢?
      

  5.   

    你有SqlDataAdapter把查询结果Fill到DataSet中,
    然后DataSet.DataTable[0],中保存的数据就是你想要的结果
      

  6.   

    用 DataTable 的Load() 方法
      

  7.   


    SqlDataReader dr ;
    string xld = "";
    dr = cmd.ExecuteReader();
    if(dr.Read())
    {
       xld = dr["xld"].ToString();
       …………………………………………………………
    }
      

  8.   

    executescalar方法是返回当前查询的第一行的第一个字段内的值。如果楼主需要多个值的话,就得用返回记录集的方法了。
      

  9.   

    或者用
    SqlDataAdapter把查询结果Fill到DataSet中, 
    然后DataSet.DataTable[0],中保存的数据就是你想要的结果
    msdn有例子方便理解