MySqlDataAdapter не заполняет DataTable

#c# #mysql #asp.net #datatable

#c# #mysql #asp.net #datatable

Вопрос:

Я хотел бы заполнить объект DataTable из запроса MySQL и отобразить с помощью DataGrid. Отображаемая часть моего кода работает хорошо (она показывает пользовательскую таблицу данных). Почему-то метод DataTable fill у меня не работает (я скопировал его из stackoverflow).

Если я заполняю DataTable из списка с помощью этой функции, она работает хорошо

DataTable t = ConvertToDataTable(список пользователей);

 public DataTable ConvertToDataTable<T>(IList<T> data)
    {
        PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
        DataTable table = new DataTable();
        foreach (PropertyDescriptor prop in properties)
            table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
        foreach (T item in data)
        {
            DataRow row = table.NewRow();
            foreach (PropertyDescriptor prop in properties)
                row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
            table.Rows.Add(row);
        }
        return table;

    }
  

И ниже решение других людей, которое у меня не сработает. я думаю, что таблица равна нулю.

             string searchQuery = "SELECT * FROM USERS";
            MySqlCommand command = new MySqlCommand(searchQuery, connection);
            MySqlDataAdapter adapter = new MySqlDataAdapter(command);
            DataTable table = new DataTable();
            adapter.Fill(table);
            GridView1.DataSource = table;
            this.GridView1.DataBind();
  

Я также прикрепил примеры значений моей базы данных MySQL.
Он не заполняет DataGrid, не показывает значений. Какие-нибудь советы?

Примерные значения базы данных MySQL

Комментарии:

1. Используйте отладчик и проверьте содержимое переменной table после вызова Fill. Этот код правильный, и у вас должны быть все записи из таблицы Users в вашей переменной DataTable.

2. У него нет значений;

3. Он выдает метод before Fill, потому что я вызвал MySqlDataReader в том же соединении…

4. В вашем коде нет DataReader. Однако это кое-что объясняет. Соединение не может использоваться для выполнения других команд, когда оно занято обслуживанием datareader