当前位置:编程学习 > C#/ASP.NET >>

那位高手伴我看看这几行代码有什么错误?

 private double GetTotalMoney(string type)
        {
            SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=FamilyFinance;User ID=sa;Password=zhixf");
            string sql = string.Format("select sum(ConsumeMoney) from Consume where[type]='{0}'",type);
            SqlCommand cmd=new SqlCommand(sql,conn);
            conn.Open();
            double total = Convert.ToDouble(cmd.ExecuteScalar());
            conn.Close();
            return total;
        }
--------------------编程问答-------------------- 提示什麽錯誤?? --------------------编程问答-------------------- 错误指在这一行
double total = Convert.ToDouble(cmd.ExecuteScalar());
对象不能从 DBNull 转换为其他类型。 --------------------编程问答-------------------- 把你的SQL輸出一下看看
裏面的值是不是空的?? --------------------编程问答-------------------- 没有空,在sql里执行:
select sum(ConsumeMoney) from Consume where[type]='收入' 
select sum(ConsumeMoney) from Consume where[type]='支出'
可以成功;
是不是下面这句
select sum(ConsumeMoney) from Consume where[Type]='{0}'
的值传布进来啊? --------------------编程问答--------------------
引用 4 楼 zhixf000 的回复:
没有空,在sql里执行:
select sum(ConsumeMoney) from Consume where[type]='收入' 
select sum(ConsumeMoney) from Consume where[type]='支出'
可以成功;
是不是下面这句
select sum(ConsumeMoney) from Consume where[Type]='{0}'
……


哪你就看看那個Type裏面是什麽值

或者直接寫成  sql  = "select sum(ConsumeMoney) from Consume where[type]='" + type + "'" --------------------编程问答-------------------- 或者Response.write(sql);
看看出來的是什麽。。
--------------------编程问答-------------------- where[type]= 这个中间是不是没有空格 --------------------编程问答--------------------
引用 6 楼 sid2008 的回复:
或者Response.write(sql);
看看出來的是什麽。。


暈。。
搞錯地方了。。
這是C#..
--------------------编程问答--------------------
引用 7 楼 timzhufaith 的回复:
where[type]= 这个中间是不是没有空格


sql = "select sum(ConsumeMoney) from Consume where[type]='" + type + "'" --------------------编程问答-------------------- where type之间。。。好像每空格 --------------------编程问答-------------------- double total = 0;
object o = cmd.ExecuteScalar();
if(!(o is DBNull))
total =Convert.ToDouble(o);

--------------------编程问答-------------------- double total = 0;
object o = cmd.ExecuteScalar();
if(o!=null&&!(o is DBNull))
    total =Convert.ToDouble(o); --------------------编程问答--------------------


private double GetTotalMoney(string type)
        {
            SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=FamilyFinance;User ID=sa;Password=zhixf");
            string sql = string.Format("select sum(ConsumeMoney) from Consume where[type]=@type");
            SqlCommand cmd=new SqlCommand(sql,conn);
            SqlParameter sp1 = new SqlParameter("@type", SqlDbType.Int, 2);
            cmd.Parameters.Add(sp1);
            conn.Open();
            double total = 0;
            object o = cmd.ExecuteScalar();
            if(o!=null&&!(o is DBNull))
            total =Convert.ToDouble(o); 
            conn.Close();
            return total;
        }




另外 type 是关键字,下次注意不要在数据库字段里使用了! --------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,