none
asp.net怎样把 select count查询出来的行数赋值给label标签?请高人指点! RRS feed

  • 问题

  • 存储过程:
    ALTER PROCEDURE [dbo].[selectcount] 
    	(
    @name varchar(50)
    )
    AS
    BEGIN
    	SELECT count(*) from abc where name=@name and datediff(day,shengjitime,getdate())=0
    END
    DAL层:
      public DataTable selectcount(string name)
           {
               DataTable dt = new DataTable();
               string cmdText = "selectcount";
               SqlParameter[] par = new SqlParameter[]
                {
                    new SqlParameter("@name",name)
                };
               dt = sqlhelper.ExecuteQuery(cmdText, par, CommandType.StoredProcedure);
               return dt;    
           }
    表示层:
     protected void Page_Load(object sender, EventArgs e)
        {
         
            if (!Page.IsPostBack)
            {
                SystemDAO sd = new SystemDAO();
                string name ="xxx";
                this.Label2.Text =sd.selectcount(name).ToString();
            }
        }
    执行存储过程可以查询结果,但是预览页面却什么都没有,也没有报错,请高人指点,谢谢!
    2012年3月8日 9:31

答案

  • 你好,请问,行名和列名应该写些什么?怎么,要不就是列不属于表,要不就是值为零,请给我详细解答,谢谢!

    我把存储过程改成:

    SELECT count(*) as scount from abc where name=@name and datediff(day,shengjitime,getdate())=0

    然后这样写,this.Label2.Text = sd.selectcount(name).Rows[0]["scount"].ToString();对吗?怎么结果是零?查询结果应该为2的,

    2012年3月9日 7:08

全部回复

  • 您好,您的selectcount方法返回的是一个DataTable类型,DataTable类型的实例调用ToString方法是没有结果的。如果你想赋值给Label,可以写成这样,

    this.Label2.Text= sd.selectcount(name)["rowname"]["colname"].ToString();


    Allen Li [MSFT]
    MSDN Community Support | Feedback to us

    2012年3月9日 3:38
    版主
  • 你好,提示错误:无法将带 [] 的索引应用于“System.Data.DataTable”类型的表达式

    this.Label2.Text= sd.selectcount(name)["rowname"]["colname"].ToString();是什么意思,请帮我解释一下,谢谢!

    2012年3月9日 5:57
  • 您好,您的方法返回的是一个DataTable,DataTable是有行和列组成的,你把上式改为sd.selectcount(name).Rows["rowname"]["colname"],rowname和colname分别为行名和列名,您也可以用index来替换。


    Allen Li [MSFT]
    MSDN Community Support | Feedback to us

    2012年3月9日 6:02
    版主
  • 你好,请问,行名和列名应该写些什么?怎么,要不就是列不属于表,要不就是值为零,请给我详细解答,谢谢!

    我把存储过程改成:

    SELECT count(*) as scount from abc where name=@name and datediff(day,shengjitime,getdate())=0

    然后这样写,this.Label2.Text = sd.selectcount(name).Rows[0]["scount"].ToString();对吗?怎么结果是零?查询结果应该为2的,

    2012年3月9日 7:08
  • 或許你可以參考這篇文章。

    http://stackoverflow.com/questions/5862773/loading-a-datatable-from-a-sql-stored-procedure


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年3月11日 14:33
  • 您好,语句没有问题,这个语句返回的是sd.selectcount(name)返回的datatable的第一行的“scount”列的值。  您可以通过SQL Profiler看一下传进参数后实际执行的命令,在数据库中运行一下看是不是您想要的结果。


    Allen Li [MSFT]
    MSDN Community Support | Feedback to us


    2012年3月12日 7:55
    版主
  • 您好,请问问题解决了吗?


    Allen Li [MSFT]
    MSDN Community Support | Feedback to us

    2012年3月19日 2:15
    版主