Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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#MySqlConnector查询并找到_行()_C#_Mysql_Mysql Connector - Fatal编程技术网

c#MySqlConnector查询并找到_行()

c#MySqlConnector查询并找到_行(),c#,mysql,mysql-connector,C#,Mysql,Mysql Connector,前言:我对MySqlConnector for c#和MySql一般来说都是新手 我想要实现的目标是执行一个查询,然后通过使用find_行获取SqlDataReader中返回的记录数 以下是我正在运行的代码: public MySqlDataReader Execute() { RecordCount = 0; mCommand = new MySqlCommand("SELECT a,b,c FROM TABLE my_table where

前言:我对MySqlConnector for c#和MySql一般来说都是新手

我想要实现的目标是执行一个查询,然后通过使用find_行获取SqlDataReader中返回的记录数

以下是我正在运行的代码:

    public MySqlDataReader Execute()
    {
        RecordCount = 0;

        mCommand = new MySqlCommand("SELECT a,b,c FROM TABLE my_table where field_x=hello", connection);

        MySqlCommand result_count_cmd = new MySqlCommand("Select FOUND_ROWS()", mCommand.Connection);



        try
        {
            // create mysql command and execute it
            mReader = mCommand.ExecuteReader();

            // get the number of rows returned by the query
            RecordCount = Convert.ToInt32(result_count_cmd.ExecuteScalar());

        }
        catch (Exception ex)
        {
            Console.WriteLine("Error Running Query: " + mCommand.CommandText);
            Console.WriteLine(ex.ToString());
        }

        return mReader;

    }
我面临的问题是,当尝试执行find_ROWS()查询时,它无法告诉我无法在另一个非关闭的读卡器正在使用的同一连接上创建新的DataReader。对我来说这听起来很公平,是否有任何方法可以检索查询返回的行数,而无需将与SELECT COUNT[…]相同的查询作为不同的DB操作运行?或者,在DataReader仍处于打开状态时,是否有方法调用查找到的行查询?

编辑:

 try
    {
      // create mysql command and execute it
       mReader = mCommand.ExecuteReader();
       int RecordCount=0;
       while (mReader.Read())
           { 
             ///do what you want with the result
             RecordCount++; //count number of rows returned
           }
     }

隐马尔可夫模型。。。mCommand存储要执行的查询,因此,通过读取mReader[0].ToString(),我是否只读取查询返回的第一条记录的第一个字段?这就是我创建两个命令的原因:一个(mCommand)保存“real”查询,另一个(result\u count\u cmd),以保留查找到的行查询。我是否遗漏了一些内容?我从何处获取记录?我看不到任何MySqlDataReader…让我尝试编辑代码…这样问题就不会那么混乱了
ExecuteReader
返回一组仅向前的快速记录,并且不会给您记录计数。您可以在读取时对记录进行计数o通过读卡器;按照建议使用
ExecuteNonQuery
,或者先运行一个完全独立的查询来计算()将返回的记录。顺便说一句,“hello”需要用撇号括起来。如果您确实需要或想要返回DataReader,那么首先运行一个单独的查询(使用相同的SQL条件)来计算()记录。就我个人而言,我认为这样做有点矛盾。使用DataReader的目的是快速迭代所有行一次,并且您可以在方法之外计算记录。我明白您的两个观点,但这正是我不想做的,原因如下: