C# DataTable行计数始终返回1
我试图使用数据适配器获取表的总行数,但我的行数始终返回1。当我使用读卡器时,我得到了准确的数字。我想使用dataAdapter 这是我的密码: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
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:-)