简体   繁体   中英

c# sql datagridview how to insert only the new rows of data into database

I have 2 columns which are Name and Price. Assume that there are already some data in the database table which will be shown in the datagridview. Now, when users entered the new rows of data(no matter how many rows), and they click on the Save button, all the new rows of data will be save into the database.

The question is, how do I catch only the new rows of data? OR how do I check if the name exist, check if the price same, then do not insert, if different price, then update the price.

Here is my code:

con = new System.Data.SqlClient.SqlConnection();
        con.ConnectionString = "Data Source=tcp:SHEN-PC,49172\\SQLEXPRESS;Initial Catalog=LSEStock;Integrated Security=True";
        con.Open();
        SqlDataAdapter da = new SqlDataAdapter();

        for (int i = 0; i<dataGridView1.Rows.Count; i++ )
        {

            String insertData = "INSERT INTO CostList(SupplierName, CostPrice, PartsID) VALUES (@SupplierName, @CostPrice, @PartsID)" ;
            SqlCommand cmd = new SqlCommand(insertData, con);
            cmd.Parameters.AddWithValue("@SupplierName", dataGridView1.Rows[i].Cells[0].Value);
            cmd.Parameters.AddWithValue("@CostPrice", dataGridView1.Rows[i].Cells[1].Value);
            cmd.Parameters.AddWithValue("@PartsID", textBox1.Text);
            da.InsertCommand = cmd;
            cmd.ExecuteNonQuery();
        }

        con.Close();

EDIT : the above code will add every data in the datagridview into database and keep on duplicating.

Thanks for your attention.

One way is to delete all the data in the sql table and then insert what ever the data you have in the grid view.

Another way to get around this problem is create a column with name tempid in the grid view and assign value -1 for all the new rows being inserted and on save click get the rows only with tempid=-1 and insert them into the sql table.

load your data to dataset and datatable in it. and one other datatable (main data) object.

after insert rows in datagrid and save clicked, check your new data with main data.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM