[英]Sum sql columns using float(C#)
我正在使用此代码:
SqlConnection con = new SqlConnection(@"Data Source=(local);Initial
Catalog=dbsoft;Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand("SELECT SUM(price) FROM fiscal");
cmd.Connection = con;
int sum = cmd.ExecuteScalar();
label3.Text = sum.ToString();
con.Close();
我收到此错误消息:
无法将类型'object'隐式转换为'int'。 存在显式转换(您是否错过了演员?)
我错过了什么?
SqlCommand.ExecuteScalar
返回一个对象,您必须将其转换/转换为您需要的类型。 如果您希望您的SUM
在DB中的类型为float
,则使用double
因为SQL Server服务器中的float
将在C#中double
。 喜欢:
double sum = (double) cmd.ExecuteScalar();
还要考虑using
语句将SqlConnection
和SqlCommand
对象SqlCommand
起来,这样可以确保资源处理,即使出现异常也是如此。
当价格在总结像12.34
, 56.78
等。我们可以指望得到浮点值 。 在钱的情况下, Decimal
是一个典型的选择(而不是int
):
...
// Convert.ToDecimal - let .Net convert, not just cast;
// what if, say, String has been returned?
Decimal sum = Convert.ToDecimal(cmd.ExecuteScalar()); // Decimal sum
label3.Text = sum.ToString();
执行:
String connString = @"Data Source=(local);Initial
Catalog=dbsoft;Integrated Security=True";
// Wrap IDisposable into using
using (SqlConnection con = new SqlConnection(connString)) {
con.Open();
// Wrap IDisposable into using
using (SqlCommand cmd = new SqlCommand(
@"SELECT SUM(price)
FROM fiscal")) {
cmd.Connection = con;
Decimal sum = Convert.ToDecimal(cmd.ExecuteScalar()); // Decimal sum
label3.Text = sum.ToString();
// or
// Shortcut - you have no need in additional convert/cast
//label3.Text = Convert.ToString(cmd.ExecuteScalar());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.