【问题标题】:How to count number of records set under a condition?如何计算条件下设置的记录数?
【发布时间】:2019-12-11 17:08:34
【问题描述】:

我基本上是编码新手,我在大学,我们有一个小项目要完成,我正在使用 OleDb 来完成它,因为我以前使用过它,我正在尝试计算数量字段等于特定值的行数,但我总是得到 0。更清楚地说,我想要显示完成调查(我正在制作的程序)的男性/女性百分比的统计数据,目前我有 1 男性和 2 位女性,所以我的所有行的字符串显示 3,这是正确的,但是当我想计算所有包含女性的行时,它显示 0,所以总百分比为 0,并且应该显示统计信息的文本框显示为 0,代码如下:

private void Form2_Load(object sender, EventArgs e)
    {
        String connectionString;
        connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Users\kubas\Desktop\MyProject\ProjectDB.accdb'";
        using (OleDbConnection myConnection = new OleDbConnection(connectionString))
        {
            string Gender1 = "Female";
            OleDbConnection con;
            OleDbCommand cmd = new OleDbCommand();
            OleDbCommand cmd1 = new OleDbCommand();
            con = new OleDbConnection(connectionString);
            con.Open();
            cmd.CommandText = "SELECT Count(Gender) FROM Survey WHERE Gender = '" + Gender1 + "'";
            cmd1.CommandText = "SELECT Count(Gender) FROM Survey";
            cmd.Connection = con;
            cmd1.Connection = con;
            con.Close();
            try
            {
                con.Open();
                int total = (Int32)cmd.ExecuteScalar();
                int total1 = (Int32)cmd1.ExecuteScalar();
                int tot;
                tot = total / total1 * 100;
                string ttal = Convert.ToString(tot);
                textBox1.Text = ttal;
                con.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                if (con.State == ConnectionState.Open)
                {
                    con.Close();
                }

            }

如果有什么你听不懂的地方很抱歉,英语不是我的第一语言。

【问题讨论】:

  • tot = total / total1 * 100; 您正在使用只能产生整数值的整数除法。你需要一个浮点除法。
  • 所以将数字转换为双精度,然后像 dat 一样除法:tot = (double)total/(double)total1?那将是结果,谢谢,但第一个值始终为 0,它不应该是
  • 尝试在您的数据库上运行相同的查询
  • 是的,它在访问查询中也没有显示任何内容,但我不知道为什么,女性到处都是大写 F,没有空格,没有特殊字符 更新:实际上,每当我尝试运行任何查询访问,没有记录显示,现在尝试年龄,并命名 UPDATE2:我没有写性别 =“女性”等,而是输入了女性,它在访问中正常工作。

标签: c# oledb oledbconnection oledbcommand


【解决方案1】:

也许试试这个命令查询:"SELECT Count(Gender) FROM Survey WHERE Gender = \"" + Gender1 + "\"";

据我所知。 access 对字符串使用引号。

【讨论】:

  • 嗯,我不知道该怎么说,但是我同时向我的朋友求助,他告诉我一些事情并且没有任何效果,所以我回到相同的代码并且它有效,我不知道如何或为什么,但它确实适用于斜线,谢谢
猜你喜欢
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 2020-08-27
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-22
相关资源
最近更新 更多