C# 使用浮点数对sql列求和(C)
我正在使用以下代码:C# 使用浮点数对sql列求和(C),c#,sql,C#,Sql,我正在使用以下代码: 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.ExecuteSc
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”。存在显式转换。是否缺少强制转换
我遗漏了什么吗?返回一个对象,您必须将其强制转换为所需类型。如果希望总和的类型为float in DB,则在SQL server中使用double-since-float将C中的值加倍。例如:
double sum = (double) cmd.ExecuteScalar();
还考虑将您的SQL连接和Sql命令对象封装起来,这将确保资源处理,即使在异常情况下。p> 当我们将12.34、56.78等价格相加时,我们可能会得到浮点值。对于货币,十进制是一个典型的选择,而不是整数:
实施: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());
}
}
还是不行。我应该用石膏吗?SqlConnection con=newSqlConnection@Data来源=本地;初始目录=dbsoft;综合安全=真实;不公开;SqlCommand cmd=new-SqlCommandSELECT-SUMprice FROM-fiscal;cmd.Connection=con;double sum=doublecmd.ExecuteScalar;label3.Text=sum.ToString;con.关闭@DmO,如果您尝试double sum=Convert.ToDoublecmd.ExecuteScalar;
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());
}
}