c#统计人数,显示不存在此列数据,但数据库里有此列数据


private void button4_Click(object sender, EventArgs e)
        {
            DBConnect();
            oledbCon.Open();
            string cmdstr = @"select count(*) from 学生基本信息 where 性别 = '女'";
            OleDbCommand cmd = new OleDbCommand(cmdstr, oledbCon);
            OleDbDataReader reader = cmd.ExecuteReader();
            
            if (reader.HasRows)
            {
                
                int count = reader.GetInt32(0);
                richTextBox1.Text = "女生的人数 =" + count;
            }
        }

 

你这个没链接到数据库吧,你可以参考一下这段代码

private void button4_Click(object sender, EventArgs e)
        {
            OleDbConnection conn;
            string M = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=d:\\northwind.mdb";
            conn = new OleDbConnection(M);
            conn.Open();
            string cmdstr = @"select count(*) from 学生基本信息 where 性别 = '女'";
            OleDbCommand cmd = new OleDbCommand(cmdstr, conn);
            OleDbDataReader reader = cmd.ExecuteReader();
            if (reader.HasRows)
            {
                int count = reader.GetInt32(0);
                richTextBox1.Text = "女生的人数 =" + count;
            }
        }

 

 获取数据前要先读取reader.Read();


            if (reader.HasRows)
            {
                reader.Read();///////////////////////要先读取数据
                int count = reader.GetInt32(0);
                richTextBox1.Text = "女生的人数 =" + count;
            }

其实不用reader,ExecuteScalar获取第一行第一列数据就行,那个sql总会返回数据的

            string cmdstr = @"select count(*) from 学生基本信息 where 性别 = '女'";
            OleDbCommand cmd = new OleDbCommand(cmdstr, oledbCon);
            // OleDbDataReader reader = cmd.ExecuteReader();
            object num = cmd.ExecuteScalar();
            richTextBox1.Text = "女生的人数 =" + num;
           
            oledbCon.Close();

 

远程看一看。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632