如何计算访问数据库表的总行数?

时间:2013-09-14 11:25:47

标签: c# visual-studio-2010 ms-access

string constr = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Users\yogi\Documents\mydb.mdb";
string cmdstr = "select * from quant_level1";
OleDbConnection con = new OleDbConnection(constr);
OleDbCommand com = new OleDbCommand(cmdstr, con);
con.Open();
OleDbDataReader reader = com.ExecuteReader();
reader.Read();
DataSet data = new DataSet();
int i = data.Tables["quant_level1"].Rows.Count;
Label2.Text = i.ToString();

3 个答案:

答案 0 :(得分:1)

使用

string cmdstr = "SELECT COUNT(*) FROM quant_level1";

使用com.ExecuteScalar()

using(OleDbConnection conn = new OleDbConnection(constr))
using(OleDbCommand command = new OleDbCommand(cmdstr, conn)) 
{
    conn.Open();
    int count = (int)command.ExecuteScalar();
} 

ExecuteScalar返回查询返回的结果集中第一行的第一列,此处为行计数。

您可以在尝试使用代码示例时使用OleDbDataReader。但需要改变逻辑位。

using (OleDbConnection con = new OleDbConnection(constr))
using (OleDbCommand com = new OleDbCommand("select * from quant_level1", con))
{
    con.Open();
    using (OleDbDataReader myReader = com.ExecuteReader())
    {
        DataTable dt = new DataTable();
        dt.Load(myReader);
        int count = dt.Rows.Count;
    }
}

为什么你失败了!

您已创建数据集,但尚未使用DataReader将数据加载到数据集。所以你最后会得到零行数。

答案 1 :(得分:1)

您希望填写DataSet并稍后计算行数

DataSet data = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter(com);  
da.Fill(data);
int i = data.Tables[0].Rows.Count;
Label2.Text = i.ToString();

如果您只想计算行数,可以将查询更改为SELECT COUNT(*) FROM quant_level1并获取返回值,如下所示:

int i = (int) com.ExecuteScalar();
Label2.Text = i.ToString();

答案 2 :(得分:0)

你应该这样做:

   Select count(*) from  quant_level1 

更改命令语法executioncalar以检索单个值

CommandText = "SELECT COUNT(*) FROM region";   
Int32 count = (int32) ExecuteScalar(); 

希望这可以启发你一点