Link to home
Start Free TrialLog in
Avatar of Anwar Saiah
Anwar Saiah

asked on

I am working on a small windows forms program with C#

I need to update mysql local server with data from datagridview.
namespace StoreManager
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'storeDataSet.Customer' table. You can move, or remove it, as needed.
            this.customerTableAdapter.Fill(this.storeDataSet.Customer);

        }

        private void dataGridStudent_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void btnAdd2Database_Click(object sender, EventArgs e)
        {
                // dataGridStudent.Rows.Count 
                //MessageBox.Show("Count=1");
            SqlConnection storeConnection = new SqlConnection(global::StoreManager.Properties.Settings.Default.StoreConnectionString);
            int last=0;
            string keys = "", values = "";
            for (int i = dataGridStudent.ColumnCount-1; i > 0; i--)
                if (String.Compare(dataGridStudent.Rows[0].Cells[i].Value.ToString(), "") != 0)
                { last = i; break; } // Get the position pf the last non empty cell.(last)
                for (int i = 0; i < dataGridStudent.ColumnCount; i++)
                {

                    if (String.Compare(dataGridStudent.Rows[0].Cells[i].Value.ToString(), "") != 0)
                    {
                        values +="'"+ dataGridStudent.Rows[0].Cells[i].Value.ToString()+"'";
                        keys += dataGridStudent.Columns[i].HeaderText;
                        if (i != last )
                        { keys += ","; values += ","; }
                    }
                }
                try
                {
                   string sqlQuery = "INSERT INTO Customer ("+keys+") values (" + values+ ")";
                    //this.customerBindingSource.AddNew();
                    //MessageBox.Show(sqlQuery);
                   storeConnection.Open();
                   SqlCommand com_query = new SqlCommand(sqlQuery, storeConnection);                    
                   com_query.ExecuteNonQuery();
                   this.customerTableAdapter.Fill(this.storeDataSet.Customer); 
                    
                    MessageBox.Show(sqlQuery);
                    Form2 form2 = new Form2();
                    form2.Show();
                }
                catch (Exception ex)
                {
                   MessageBox.Show(ex.Message);
                }
                finally { //MessageBox.Show("Done!"); 
                    storeConnection.Close();
                    storeDataSet.Customer.AcceptChanges();
                }
        }
    }
}

Open in new window



Can I refresh mysql server with data from datagridview without going about each row with insert commands!?
is there a way to fill database from datagridview just like we fill datagridview from database.

In other words what is the best easiest fastest way to add a row to database using datagridview?
Avatar of Michael Fowler
Michael Fowler
Flag of Australia image

Have a look at using a MVP framework
https://winformsmvp.codeplex.com/
Avatar of Anwar Saiah
Anwar Saiah

ASKER

Michael74 ,thanks for your response.
I only need to know if in the implementation of sql local server in c# there is a function that will auto fill a sql table from a datagridview. So I don't have to reinvent the wheel. I duckduckgo'ed for an example on the web that will demonstrate the whole local sql <--> datagridview experience but haven't got any good examples. So I thought maybe some expert out there could know anything that will spare the time of going through all documentation of c#.

I do use MVP architecture in my web development ,I use Joomla. But the thing here is that I would like to save time and effort. You know instead of creating views to show tables from sql and creating save functions to save back datagridviews updates to tables, just use the existing functions. Now I have figured out the use of the function to fill a datagridview from a table ,but still have problems with opposite direction!
ASKER CERTIFIED SOLUTION
Avatar of Michael Fowler
Michael Fowler
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thank you ,that does help a lot ,even though I am using mysql local server rather than ADO ,it still helps a lot.
I haven't yet read the whole article ,the first ,so I am now going to.

Thanks again.
Thank you