Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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# 如何计算条件下设置的记录数?_C#_Oledb_Oledbconnection_Oledbcommand - Fatal编程技术网

C# 如何计算条件下设置的记录数?

C# 如何计算条件下设置的记录数?,c#,oledb,oledbconnection,oledbcommand,C#,Oledb,Oledbconnection,Oledbcommand,我对编码基本上是新手,我在uni,我们有一个小项目要完成,我用OleDb来做,就像我以前用过的一样,我试图计算一个字段等于一个特定值的行数,但我总是得到0。更清楚地说,我希望统计数据显示完成调查(我正在制作的程序)的男性/女性的百分比,目前我有1名男性和2名女性,因此我所有行的字符串显示3,这是正确的,但当我要计算包含女性的所有行时,它显示0,因此总百分比为0,应该显示stat的文本框显示0,下面是代码: private void Form2_Load(object sender, EventA

我对编码基本上是新手,我在uni,我们有一个小项目要完成,我用OleDb来做,就像我以前用过的一样,我试图计算一个字段等于一个特定值的行数,但我总是得到0。更清楚地说,我希望统计数据显示完成调查(我正在制作的程序)的男性/女性的百分比,目前我有1名男性和2名女性,因此我所有行的字符串显示3,这是正确的,但当我要计算包含女性的所有行时,它显示0,因此总百分比为0,应该显示stat的文本框显示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();
                }

            }

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

也许可以尝试以下命令查询:
“从调查中选择计数(性别),其中性别=\”“+Gender1+\”


据我记忆所及。access对字符串使用引号。

tot=total/total1*100;您使用的整数除法只能生成整数值。你需要一个浮点除法,所以把数字转换成double,然后像dat:tot=(double)total/(double)total1那样除法?这将是结果,谢谢,但第一个值始终为0,不应该在数据库上运行相同的查询是的,它在access查询上也没有显示任何内容,但我不确定为什么,到处都是大写F的女性,没有空格,没有特殊字符更新:实际上,每当我尝试运行access查询时,没有记录显示,现在试用了年龄,名字更新2:我没有写gender=“female”等,而是输入了female,它在access中正常工作。嗯,我不知道该怎么说,但同时我向我的朋友寻求帮助,他告诉了我一些事情,但什么都没用,所以我回到了相同的代码,它工作了,我不知道如何或为什么,但它确实与斜杠一起工作,谢谢