Как сохранить данные многострочного DataGridView в базу данных MySQL в C # - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть несколько строк данных в одном столбце.Мне нужно сохранить все данные в БД MySQL.Но это только сохранение выбранных строк данных только в DataGridView.

Ниже приведен мой пример кода.

private void button1_Click(object sender, EventArgs e)
{
    string price = dataGridView1[3, dataGridView1.CurrentCell.RowIndex].Value.ToString();

    string Query = "INSERT INTO db1.table1 (price) VALUES ('"+ price +"');";


    MySqlConnection myConn = new MySqlConnection(MySQLConn);
    MySqlCommand MySQLcmd = new MySqlCommand(Query, myConn);
    MySqlDataReader myReader;
    try
    {
        myConn.Open();
        myReader = MySQLcmd.ExecuteReader();
        while (myReader.Read())
        {

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

Ценю любую помощь ? Спасибо!

Ответы [ 3 ]

0 голосов
/ 20 сентября 2018

Если вы хотите сохранить все строки из своего Gridview, затем выполните цикл по нему и выберите значение столбца для сохранения.

Также, если вы хотите сохранить / обновить базу данных, вы должны использовать ExecuteNonQuery .Наконец, избавьтесь от создаваемых вами объектов и причины , используя .

using (MySqlConnection myConn = new MySqlConnection(MySQLConn))
{
    myConn.Open();

    MySqlCommand MySQLcmd = new MySqlCommand(Query, myConn);
    MySqlParameter priceParameter = new MySqlParameter("@price");
    MySQLcmd.Parameters.Add(priceParameter);

    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
       var price = row.Cells["PRICE_COLUMN_NAME"].Value;

       MySQLcmd.Parameters["@price"].Value = price;

       MySQLcmd.ExecuteNonQuery();
     }
}
0 голосов
/ 20 сентября 2018

Уважаемый mbharanidharan88 и user3501749 , Спасибо за быструю поддержку.С твоей поддержкой я нахожу новый код.Ниже приведен мой полный рабочий код (для меня).

private void button1_Click(object sender, EventArgs e)
    {
       try
        {
            string MySQLConn = "datasource=localhost;port=3306;username=root;password=root;";
            MySqlConnection myConn = new MySqlConnection(MySQLConn);
            myConn.Open();

            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                string price = dataGridView1.Rows[i].Cells[3].Value.ToString();
                string Query = "INSERT INTO db1.table1 (price) VALUES ('"+ price + "');";
                MySqlCommand MySQLcmd = new MySqlCommand(Query, myConn);
                MySQLcmd.ExecuteNonQuery();

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

Если что-то не так, дайте мне знать ?

0 голосов
/ 20 сентября 2018

Один из способов - использовать цикл Foreach, чтобы получить все значения строк по одной в DataGridView, а затем вставить их.

foreach (DataGridViewRow row in dataGridView1.Rows)                   
{ 
    string constring = "Connection String";
    using (MySqlConnection con = new MySqlConnection(constring))
    {
        using (MySqlCommand cmd = new MySqlCommand("INSERT INTO db1.table1 (price) VALUES (@price", con))
        {
            cmd.Parameters.AddWithValue("@price", row.Cells["ColumnName"].Value);
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...