如何在C#中从SQL表中计算行数?

10
如何在C#中从SQL表中计算行数?
我需要从我的数据库中提取一些数据...
7个回答

41

您可以尝试像这样:

select count(*) from tablename where columname = 'values'

C# 代码将类似于以下内容:

public int A()
{
   string stmt = "SELECT COUNT(*) FROM dbo.tablename";
   int count = 0;

   using(SqlConnection thisConnection = new SqlConnection("Data Source=DATASOURCE"))
   {
       using(SqlCommand cmdCount = new SqlCommand(stmt, thisConnection))
       {
           thisConnection.Open();
           count = (int)cmdCount.ExecuteScalar();
       }
   }
   return count;
}

数据源=DATASOURCE - zibidigonzales

4
您需要首先从c#建立数据库连接。然后,您需要将以下查询作为commandText传递。 Select count(*) from TableName 使用ExecuteScalar/ExecuteReader获取返回的计数。

3
您可以创建全局函数,这样您就可以随时使用它们,如下所示:
    public static int GetTableCount(string tablename, string connStr = null)
    {
        string stmt = string.Format("SELECT COUNT(*) FROM {0}", tablename);
        if (String.IsNullOrEmpty(connStr))
            connStr = ConnectionString;
        int count = 0;
        try
        {

            using (SqlConnection thisConnection = new SqlConnection(connStr))
            {
                using (SqlCommand cmdCount = new SqlCommand(stmt, thisConnection))
                {
                    thisConnection.Open();
                    count = (int)cmdCount.ExecuteScalar();
                }
            }
            return count;
        }
        catch (Exception ex)
        {
            VDBLogger.LogError(ex);
            return 0;
        }
    }

3
你是指像这样吗?
SELECT COUNT(*) 
FROM yourTable 
WHERE ....

1

0

我在我的应用程序中使用了这种方法来计算程序中活跃用户的数量。这可以很容易地为您自己的使用进行操作。

        con.open();
        string ActiveUsers = "SELECT * FROM Devices WHERE Status='" + "Online" + "'";
        SqlCommand cmd = new SqlCommand(ActiveUsers, con);
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        sda.Fill(ds);
        con.Close();

        Users.Text = ds.Tables[0].Rows.Count.ToString();

0

使用这个,它可以工作

        string strQuery = "SELECT * FROM staff WHERE usertype='lacturer'";

        connect.Open();

        SqlCommand cmd = new SqlCommand(strQuery, connect);
        SqlDataAdapter OleDbDa = new SqlDataAdapter(cmd);
        DataSet dsData = new DataSet();
        OleDbDa.Fill(dsData);

        connect.Close();
        
        std.Text = dsData.Tables[0].Rows.Count.ToString();

2
不,你不想将整个表加载到DataSet中仅仅为了获取行数。是的,它可以工作,但如果你的数据库包含100 MB的数据,你将使用(大约)100 MB的网络流量和100 MB的RAM来获取一个整数。这是一种不好的做法。 - CodeCaster
非常感谢。我今天学到了新东西。 - Sajas Mohammed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接