大家看这图...1.当点dataGridView最后一行时,就会出现一新行可以输入数据,我想当点一button时,把这添加的一行存到数据库,怎么保存这添加的一行的数据?
2.当点有数据的一行时可以修改数据,如何点一button,把这修改的数据传回到数据库?
3.如果在dataGridView上面执行删除操作?

解决方案 »

  1.   

    我是Oracle数据库,根据你的数据库,自己改一下吧private OracleDataAdapter oda = new OracleDataAdapter();
            static DataSet ds = new DataSet();
            OracleConnection conn;        private void Form1_Load(object sender, EventArgs e)
            {
                //dataGridView1.AutoGenerateColumns = false;
                conn = new OracleConnection(Source);
                conn.Open();
                
                oda.UpdateCommand = new OracleCommand("update table set serial_number = :sn ,next_station = :ns where rowid = :rid", conn);            
                oda.UpdateCommand.Parameters.Add("rid", OracleType.VarChar, 30).SourceColumn = "ROWID";
                oda.UpdateCommand.Parameters.Add("sn", OracleType.VarChar, 30).SourceColumn = "SERIAL_NUMBER";
                oda.UpdateCommand.Parameters.Add("ns", OracleType.VarChar, 40).SourceColumn = "NEXT_STATION";            oda.DeleteCommand = new OracleCommand("delete table  where rowid = :rid", conn);
                oda.DeleteCommand.Parameters.Add("rid", OracleType.VarChar).SourceColumn = "ROWID";            oda.InsertCommand = new OracleCommand("insert into table(serial_number,next_station) values(:sn , :ns )", conn);
                oda.InsertCommand.Parameters.Add("sn", OracleType.VarChar).SourceColumn = "serial_number";
                oda.InsertCommand.Parameters.Add("ns", OracleType.VarChar).SourceColumn = "next_station";        }
            private void select_Click(object sender, EventArgs e)
            {
                try
                {
                    ds.Clear();
                    string sql = "select rowid,serial_number,next_station from TABLE where serial_number like :sn";
                    oda.SelectCommand = new OracleCommand(sql, conn);
                    oda.SelectCommand.Parameters.Add("sn", OracleType.VarChar).Value = tb_SN.Text + "%";
                    oda.Fill(ds);
                    dataGridView1.DataSource = null;
                    dataGridView1.DataSource = ds.Tables[0];
                }            catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }        private void update_Click(object sender, EventArgs e)
            {
                this.Validate();
                dataGridView1.EndEdit();
                oda.Update(ds.Tables[0]);
            }
            private void insert_Click(object sender, EventArgs e)
            {
                this.Validate();
                dataGridView1.EndEdit();
                oda.Update(ds.Tables[0]);
            }     
      

  2.   

    你可以先创建另一个窗体.再输入数据,点BUTTON保存到数据库,而数据可以在dataGridView显示的.
     private void btn_save_Click(object sender, EventArgs e) { }
            ////{
            ////    Class_book book = new Class_book();
            ////    try {
            ////        book.bookAmount =txt_amount.Text.ToString ();
            ////        book .bookID =txt_booknum .Text .Trim ();
            ////        book .bookName =txt_name .Text .Trim ();
            ////        book.bookPrice =txt_price .Text .Trim ();
            ////        book.bookPublish =txt_publish .Text .Trim ();
            ////        book.bookPublishDate =dtp_publishtime.Text .ToString ();
            ////        book.bookremain =txt_kcs .Text .Trim ();
            ////        book.bookWriter =txt_name .Text .Trim ();        ////        if(Femode =="0")
            ////        {
            ////            if (book.insert_book() != "0")
            ////            {
            ////                MessageBox.Show("图书增加失败");
            ////                return;
            ////            }
            ////            else
            ////            {
            ////                Frmbook.querybook();
            ////                this.Close();
            ////            }
            ////            }
            ////        }        ////            catch (Exception ex)
            ////             {}
            ////    finally {book =null ;}
            ////}
    2.删除:
    选择一行,
    if (dgv_provider.SelectedRows.Count > 0 && dgv_provider.SelectedRows[0].Index != dgv_provider.Rows.Count)
                {
                    DataGridViewRow myRow = new DataGridViewRow();
                    myRow = dgv_provider.SelectedRows[0];
                    string name = myRow.Cells["????"].Value.ToString();
                    if ((MessageBox.Show("确定要删除" + name + "???", "删除????", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) == DialogResult.Yes)
                    {
                        
                        Class_provider provider = new Class_provider();
                        provider.Providerid = long.Parse(myRow.Cells["?????"].Value.ToString());
                        provider.Userid = PublicMember.pfsh;
                        provider.delete();
                        queryprovider();
                    }
      

  3.   


    if (dtb.Rows[DataGridView1.CurrentRow.Index].RowState==DataRowState.Added)
    {
    //添加记录
    }
    ElseIf (dtb.Rows[DataGridView1.CurrentRow.Index].RowState==DataRowState.Modified)
    {
    //修改记录
    }
    ElseIf (dtb.Rows[DataGridView1.CurrentRow.Index].RowState==DataRowState.Deleted)
    {
    //删除记录
    }
      

  4.   

    不建议在DataGridView里直接操作,写多一个Form不好么?(添加修改都可以调用同一个Form)
    删除的话就直接操作就好了。。