大虾们帮忙看看问题出在哪。
       DialogResult result = MessageBox.Show("确定要保存吗?", "请确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            ocnn = new OleDbConnection(connections);
            ocnn.Open();            try
            {
                if (result == DialogResult.Yes)
                {
                    for (int i = 0; i < dgv_Data.Rows.Count; i++)
                    {
                        string value1 = this.dgv_Data.Rows[i].Cells[0].Value.ToString();//已经有4条数据,好像这样写就不行了,但不知道怎么改
                        string value2 = this.dgv_Data.Rows[i].Cells[1].Value.ToString();
                        string value3 = this.dgv_Data.Rows[i].Cells[2].Value.ToString();
                        string value4 = this.dgv_Data.Rows[i].Cells[3].Value.ToString();                        string sql = "insert into MIS_MaterielRegiser(MaterielRegiser_Number,MaterielRegiser_Name,MaterielRegiser_Model,MaterielRegiser_Unit) values('" + value1 + "','" + value2 + "','" + value3 + "','" + value4 + "')";
                        ocmd = new OleDbCommand(sql, ocnn);
                        //  ocmd.ExecuteNonQuery();
                        DataSet ds = new DataSet();
                        oda = new OleDbDataAdapter(ocmd);
                        dgv_Data.DataSource = null;
                        dgv_Data.DataSource = ds.Tables[0];
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message); 
            }

解决方案 »

  1.   

    1、try范围太大,调试时可以先去掉,之后只放到command执行时
    2、string value1 = (this.dgv_Data.Rows[i].Cells[0].Value!=null)?this.dgv_Data.Rows[i].Cells[0].Value.ToString():string.Empty;
    确定不为null
    3、ocnn.Open();尽量放到,command执行前,并且尽快关闭
      

  2.   

    我把try去掉,但是dgv_Data.DataSource = ds.Tables[0];报错,说无法找到表0!这是为什么
      

  3.   

    这个只是更新datagridview的数据吧。现在的问题是数据都还没插入到数据库里
      

  4.   

    我换了个写法,但还是报错!
     DialogResult result = MessageBox.Show("确定要保存吗?", "请确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                ocnn = new OleDbConnection(connections);
                ocnn.Open();            //try
                //{
                    if (result == DialogResult.Yes)
                    {
                        for (int i = 0; i < dgv_Data.Rows.Count; i++)
                        {
                            string number = Convert.ToString(this.dgv_Data.Rows[i].Cells[0].Value);
                            string name = Convert.ToString(this.dgv_Data.Rows[i].Cells[1].Value);
                            string model =Convert.ToString(this.dgv_Data.Rows[i].Cells[1].Value);
                            string unit = Convert.ToString(this.dgv_Data.Rows[i].Cells[1].Value);                        ocmd.CommandText = "insert into MIS_MaterielRegiser(MaterielRegiser_Number,MaterielRegiser_Name,MaterielRegiser_Model,MaterielRegiser_Unit) values('" + number + "','" + name + "','" + model + "','" + unit + "')";                       
                            OleDbDataAdapter oda = new OleDbDataAdapter(ocmd);
                            DataSet ds = new DataSet();
                            OleDbCommandBuilder ocb = new OleDbCommandBuilder(oda);
                            oda.Update(ds);//Update 无法找到 TableMapping['Table'] 或 DataTable“Table”。
                            dgv_Data.Update();
                        }
                    }