Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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# DataTable行计数始终返回1_C#_Ms Access_Datatable - Fatal编程技术网

C# DataTable行计数始终返回1

C# DataTable行计数始终返回1,c#,ms-access,datatable,C#,Ms Access,Datatable,我试图使用数据适配器获取表的总行数,但我的行数始终返回1。当我使用读卡器时,我得到了准确的数字。我想使用dataAdapter 这是我的密码: public double GetRowNumber() { using (OleDbConnection con = new OleDbConnection(someConnectionString)) { con.Open(); String cmdString = "SE

我试图使用数据适配器获取表的总行数,但我的行数始终返回1。当我使用读卡器时,我得到了准确的数字。我想使用dataAdapter

这是我的密码:

public double GetRowNumber()
    {
        using (OleDbConnection con = new OleDbConnection(someConnectionString))
        {
            con.Open();
       String cmdString = "SELECT COUNT (*) FROM " + "[" + Table +"]" 

            OleDbDataAdapter db = new OleDbDataAdapter(cmdString, dbConn);
            DataTable dt = new DataTable();
            db.Fill(dt);
            return dt.Rows.Count;

        }
    }

有什么想法吗?

您的函数将始终返回1,因为

SELECT COUNT (*) FROM " 
语句将用1条记录(计数的数目)填充数据表

如果需要行计数,请使用

   con.Open();
   String cmdString = "SELECT COUNT (*) FROM " + "[" + Table +"]" 
   OleDbCommand cmd = new OleDbCommand();
   cmd.Text = cmdString ;
   cmd.Connection = con;
   int count = Convert.ToInt32(cmd.ExecuteScalar());

更快速、更轻便,满足您的需求。您不必使用datatable之类的对象。

该表只有一行。它包含一个单元格,其中包含数据库中查询表的行数。也就是说,查询的结果是一行一列的集合


您可以返回
dt.Rows[0][0],而不是dt.Rows.Count,但这太过分了。但在这种情况下,我认为使用是最佳实践(kostas so kudos和Upvots的忍者教育)。

因为您的查询只返回一行。如果运行sql server manager并执行查询

结果是这样的


回答得好,但用一个简单的例子就更好了OK,但它是Convert.ToInt32:-)