【问题标题】:Capturing count from an SQL query从 SQL 查询中捕获计数
【发布时间】:2021-04-17 11:59:24
【问题描述】:

在 C#(.cs 文件)中从 SQL 命令获取计数的最简单方法是什么

SELECT COUNT(*) FROM table_name

int 变量中?

【问题讨论】:

    标签: c# sql sql-server


    【解决方案1】:

    使用SqlCommand.ExecuteScalar() 并将其转换为int

    cmd.CommandText = "SELECT COUNT(*) FROM table_name";
    Int32 count = (Int32) cmd.ExecuteScalar();
    

    【讨论】:

    • 是的,里面的例子也涵盖了这一点,只需将INSERT INTO 更改为您的SELECT 语句..
    • 在这种情况下,总会有一个int类型的返回值。在更一般的情况下,您可能会得到 DBNull 的返回值,例如“从 table1 中选择 ssn,其中 company_id = '112233'”。由于您无法将 DBNull 转换为您的返回数据类型,因此您可以在 SQL 或您的应用程序中对其进行测试和更改。
    • @SearchForKnowledge 检查返回的值是一个可以转换为 Int32 的值。您很有可能正在尝试转换单词。
    • @SearchForKnowledge 尝试使用 Convert.ToInt32(cmd.ExecuteScalar()) 而不是强制转换。
    • 使用 long 而不是 int 作为返回类型
    【解决方案2】:
    SqlConnection conn = new SqlConnection("ConnectionString");
    conn.Open();
    SqlCommand comm = new SqlCommand("SELECT COUNT(*) FROM table_name", conn);
    Int32 count = (Int32) comm .ExecuteScalar();
    

    【讨论】:

    • 这和我的回答不一样吗?
    • 为了清楚起见,连接字符串通常是一个字符串,其中包含有关您连接到哪个数据库的信息。示例:“服务器=myServerAddress;Database=myDataBase;Trusted_Connection=True;”这将使用您在计算机上运行的相同凭据登录到数据库。
    【解决方案3】:

    您会遇到以下转换错误:

    cmd.CommandText = "SELECT COUNT(*) FROM table_name";
    Int32 count = (Int32) cmd.ExecuteScalar();
    

    改用:

    string stm = "SELECT COUNT(*) FROM table_name WHERE id="+id+";";
    MySqlCommand cmd = new MySqlCommand(stm, conn);
    Int32 count = Convert.ToInt32(cmd.ExecuteScalar());
    if(count > 0){
        found = true; 
    } else {
        found = false; 
    }
    

    【讨论】:

    • 我有一个问题......如果我想使用文本框在字符串上的位置,例如:- string stm = "SELECT COUNT(*) FROM table_name WHERE name="+Name.Text 。修剪()+";" ;
    【解决方案4】:

    在 C# 中使用 SQL 进行补充:

    SqlConnection conn = new SqlConnection("ConnectionString");
    conn.Open();
    SqlCommand comm = new SqlCommand("SELECT COUNT(*) FROM table_name", conn);
    Int32 count = Convert.ToInt32(comm.ExecuteScalar());
    if (count > 0)
    {
        lblCount.Text = Convert.ToString(count.ToString()); //For example a Label
    }
    else
    {
        lblCount.Text = "0";
    }
    conn.Close(); //Remember close the connection
    

    【讨论】:

      【解决方案5】:
      int count = 0;    
      using (new SqlConnection connection = new SqlConnection("connectionString"))
      {
          sqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM table_name", connection);
          connection.Open();
          count = (int32)cmd.ExecuteScalar();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-08
        • 2016-12-08
        • 2014-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多