数据从阅读器对象C#/ MYSQL中消失

时间:2019-01-27 06:48:14

标签: c# mysql

在C#中使用mysql数据读取器时,我注意到一种奇怪的行为。 当我执行查询时,我得到的数据与我可以在阅读器对象中看到的数据相同。 但是,在调试期间,当我在此处停留一秒钟或毫秒时,数据将从读取器中消失,并显示“枚举未产生结果”。 下面是我的相同代码。 我找不到相同的解决方案。

 public async Task<bool> SelectAsync(MySqlCommand command)
        {
            DbDataReader reader;
            try
            {
                MySqlCommand cmd = command;
                command.Connection = _connection;
                reader = await  cmd.ExecuteReaderAsync();
                while (reader.Read())
                {
                    // extracting fields from reader object code goes here
                }
                reader.Close();
                return true;
            }
            catch (Exception ex)
            {
                //error log
                _errorMessage = $"{ex}";
                return false;
            }
        }

2 个答案:

答案 0 :(得分:0)

如果在调试期间扩展了枚举从datareader枚举数据的任何阅读器集合,则CREATE TABLE `customers` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `full_name` VARCHAR(255) NOT NULL COLLATE 'utf8mb4_unicode_ci', `email` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci', `address` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci', `type` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci', `customer_type` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci', `created_at` TIMESTAMP NULL DEFAULT NULL, `updated_at` TIMESTAMP NULL DEFAULT NULL, `account_type` ENUM('I','B') NOT NULL COMMENT 'I=>Individual, B=>Business' COLLATE 'utf8mb4_unicode_ci', `company_name` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci', `po_box` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci', `office_fax` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci', `vendor_details` MEDIUMTEXT NULL COLLATE 'utf8mb4_unicode_ci', PRIMARY KEY (`id`), INDEX `customers_full_name_index` (`full_name`), INDEX `customers_account_type_index` (`account_type`), INDEX `customers_customer_type_type_index` (`customer_type`, `type`) ) COLLATE='utf8mb4_unicode_ci' ENGINE=InnoDB AUTO_INCREMENT=1118 ; 方法将自动在datareader对象上调用,并且该阅读器将前进至下一个记录或结束。因此,如果将其放置在末尾,则看不到任何记录。请注意,一旦到达读取器对象的结束位置,datareader就会为空。

我建议您在调试过程中不要显示任何读者结果集合,以解决此问题。

答案 1 :(得分:0)

如果要在调试模式或WATCH下查看对象的状态;将由数据库调用填充,您必须首先实现。