genext.brite -4 Newbie Poster

Hello everyone, I have bound a datagridview with a table, And put a checkbox on each row .And an Insert button at the bottom. On clicking the button ,the Checked rows are to be inserted in the table. When I do that it gives an error as 'Can not Insert Duplicate rows,Violation of Primary key', Although it gets inserted in the SQL database.
Why this thing id happening?? or is there any other way to implement Insertion into Table.
My code on button_click is :

private void button2_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow dg in dataGridView1.Rows)
            {
                if (dg.Cells[0].Value != null)
                {
                    obj.cmd.CommandText = "Select *from Book";
                    obj.adpt.Fill(obj.ds, "vt");
                    obj.dr = obj.ds.Tables["vt"].NewRow();
                    obj.dr["Book_id"] = dg.Cells[2].Value.ToString();
                    obj.dr["Book_name"] = dg.Cells[3].Value.ToString();
                    obj.dr["Publisher"] = dg.Cells[4].Value.ToString();
                    obj.dr["Author"] = dg.Cells[5].Value.ToString();
                    obj.dr["Copies"] = dg.Cells[6].Value.ToString();
                    obj.ds.Tables["vt"].Rows.Add(obj.dr);
                    SqlCommandBuilder sb = new SqlCommandBuilder(obj.adpt);
                    obj.adpt.Update(obj.ds.Tables["vt"]);
                }
            }
        }

Plzz help sumone!!