【问题标题】:How to count all rows in a data table c#如何计算数据表中的所有行c#
【发布时间】:2016-12-14 23:24:17
【问题描述】:

所以我正在为一个大学项目创建一个消息传递应用程序,并且我在 Access 中有一个用户数据库,我已经正确链接了数据库并且可以执行语句,但我正在努力解决一个问题,如何计算其中的行数一个数据表。

其实我想做的就是统计用户总数,老师让我把数据放到DataTable中,然后统计行数。但是,无论我在数据库中有多少用户,它总是返回为 2。

int UserCount = 0;

        using (OleDbConnection cuConn = new OleDbConnection())
        {
            cuConn.ConnectionString = @"DATASOURCE";
            string statement = "SELECT COUNT(*) FROM Users";

            OleDbDataAdapter da = new OleDbDataAdapter(statement, cuConn);
            DataTable Results = new DataTable();
            da.Fill(Results);
            if (Results.Rows.Count > 0)
            {
                UserCount = int.Parse(Results.Rows[0][0].ToString());
            }
        }

上面的代码是我老师发给我的副本,老师说它可以工作。任何帮助将不胜感激。

另外,对不起,如果这是浪费时间,还在习惯这个 StackOverflow 的东西......

【问题讨论】:

  • 虽然不是获取该信息的最佳方式,但此代码应该可以工作。除非...您确定您正在查看同一个数据库吗?你真正的连接字符串是什么?
  • 你应该使用 DbCommand 或 SELECT * FROM Users 然后你可以使用 DataTable.Rows.Count
  • @mcNets 为什么要检索所有行数据只是为了对它们进行计数?查询是正确的,更好的方法是使用 ExecuteScalar 而不是 DataAdapter 所需的所有基础设施
  • 是的,但随后使用 DbCommand 执行查询。
  • 我指向了两者,一个 dbcommand 或 select *

标签: c# sql database oledb oledbconnection


【解决方案1】:

尝试将Users 替换为[Users]? 因为Users可能是数据库的关键词。 此外,获取汇总数字的更简单方法是通过ExecuteScalar 方法。

    using (OleDbConnection cuConn = new OleDbConnection())
    {
        cuConn.ConnectionString = @"DATASOURCE";
        string statement = "SELECT COUNT(*) FROM [Users]";

        OleDbCommand cmd = new OleDbCommand (statement, cuConn);
        cuConn.Open();
        int count = (int)cmd.ExecuteScalar();
        if (count > 0)
        {
            //
        }
    }

【讨论】:

  • 当使用using时:不需要关闭cuConn连接...它会被关闭然后自动释放。
【解决方案2】:

我已成功将您的确切代码(连接字符串除外)与 sql server 一起使用,因此您的 @"DATASOURCE" 或 MS Access 可能存在问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    • 1970-01-01
    • 2015-03-21
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多