那位高手伴我看看这几行代码有什么错误?
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}'
的值传布进来啊? --------------------编程问答--------------------
哪你就看看那個Type裏面是什麽值
或者直接寫成 sql = "select sum(ConsumeMoney) from Consume where[type]='" + type + "'" --------------------编程问答-------------------- 或者Response.write(sql);
看看出來的是什麽。。
--------------------编程问答-------------------- where[type]= 这个中间是不是没有空格 --------------------编程问答--------------------
暈。。
搞錯地方了。。
這是C#..
--------------------编程问答--------------------
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#