Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用浮点数对sql列求和(C)_C#_Sql - Fatal编程技术网

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());
  }
}