MySql, C# & DataGridView

0

Witam szanowne koleżanki i kolegów! Mam sobie taki kawałeczek kodu, który po połączeniu z bazą MySql ma wykonać zapytanie i wynik wyświetlić w dataGridView. Wypełnianie dataGrida robię następująco, ale wiem, że jest prostszy i bardziej elegancki sposób, bez tych wszystkich pętli, którego jednak nie mogę odnaleźć lub zastosować tak żeby działało:/


           try
                 {
                    _adapter = new MySqlDataAdapter(_query, _connection);
                    _dataSet = new DataSet();
                    _adapter.Fill(_dataSet);

                    foreach (DataColumn c in _dataSet.Tables[0].Columns)
                        dataGridView.Columns.Add(c.ColumnName, c.Caption);

                    foreach (DataRow r in _dataSet.Tables[0].Rows)
                    {
                        DataGridViewRow row = new DataGridViewRow();
                        row.CreateCells(dataGridView, r.ItemArray);
                        dataGridView.Rows.Add(row);
                    }

                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return;
                }

Przy okazji pytanie, teraz wszystko działa szybko, danych nie ma dużo, ale czy ma ktoś doświadczenie jak wygląda importowanie do dgv setek tysięcy czy milionów rekordów?

0

albo zamiast

  foreach (DataColumn c in _dataSet.Tables[0].Columns)
                        dataGridView.Columns.Add(c.ColumnName, c.Caption);

                    foreach (DataRow r in _dataSet.Tables[0].Rows)
                    {
                        DataGridViewRow row = new DataGridViewRow();
                        row.CreateCells(dataGridView, r.ItemArray);
                        dataGridView.Rows.Add(row);
                    }

daj:

dataGridView.DataSource = _dataSet.Tables[0];
0

Dzięki za pomoc, zastosowałem rozwiązanie które podał Deti, jednak ku zdziwiłem się tym, że na stronach msdn informacje są niekompletne!


        // Specify a connection string. Replace the given value with a 
        // valid connection string for a Northwind SQL Server sample
        // database accessible to your system.
        String connectionString =
            "Integrated Security=SSPI;Persist Security Info=False;" +
            "Initial Catalog=Northwind;Data Source=localhost";

        // Create a new data adapter based on the specified query.
        dataAdapter = new SqlDataAdapter(selectCommand, connectionString);

        // Create a command builder to generate SQL update, insert, and
        // delete commands based on selectCommand. These are used to
        // update the database.
        SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);

        // Populate a new data table and bind it to the BindingSource.
        DataTable table = new DataTable();
        table.Locale = System.Globalization.CultureInfo.InvariantCulture;
        dataAdapter.Fill(table);
        bindingSource1.DataSource = table;

        // Resize the DataGridView columns to fit the newly loaded content.
        dataGridView1.AutoResizeColumns( 
            DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);

Po pierwsze:
bindingSource1.DataSource = table;
co to jest bindingSource1 i skąd się bierze? Jasne, można się łatwo domyśleć, jednak skoro robi się manuala to chyba powinno się pisać skąd bierze się daną zmienną, jakiego jest typu...

Po drugie: jeśli sami nie wpadniecie na pomysł żeby po omawianej wyżej linijce dodać jeszcze
dataGridView1.DataSource = bindingSource1;
to nie wyświetlicie sobie nic ...

No, tak tylko chciałem się podzielić...

Aha, tak przy okazji, jak zsynchronizować kodowanie znaków z bazy i softu? Tak żeby było poprawne niezależnie od tego jakie kodowanie stosowane jest w bazce? Da się to jakoś programowo wyciągnąć i odpowiednio ustawić w dgv?

1 użytkowników online, w tym zalogowanych: 0, gości: 1