数据库连接 con = new 数据库连接();
            SqlConnection conn = con.OpenConn();
            SqlDataAdapter da = new SqlDataAdapter("select * from 库存盘点", conn);
            SqlCommandBuilder cb = new SqlCommandBuilder(da);
            da.Update(Mdt);
            conn.Close();
            da.Dispose();
            cb.Dispose();
            MessageBox.Show("更新成功", "系统提示",MessageBoxButtons.OK, MessageBoxIcon.Information);
代码都执行完了,消息框都弹出了,就是数据库中没有插入数据。
我试验了一下,用SqlCommand com = new SqlCommand("insert into 库存盘点 values('" + bh + "','" + mc + "','" + tm + "','" + ge + "','" + dw + "','" + pp + "','" + jj + "','" + sj + "','" + kc + "')", conn);
            com.ExecuteNonQuery();可以插入新的数据。

解决方案 »

  1.   

    补充一下用的是SQL2005数据库!
      

  2.   

    LZ的代码不是select * from 库存盘点  么?
    没看到有插入数据的
      

  3.   

    增加:
    da.UpdateCommand=".........";
      

  4.   

    da.InsertCommand = ".........";
      

  5.   

    SqlCommand com = new SqlCommand("insert into 库存盘点 values('" + bh + "','" + mc + "','" + tm + "','" + ge + "','" + dw + "','" + pp + "','" + jj + "','" + sj + "','" + kc + "')", conn); da.UPDATECOMMAND=COM;??
      

  6.   

            DataTable Mdt = new DataTable();
            自动编号 AT = new 自动编号();
            private void 库存盘点_Load(object sender, EventArgs e)
            {
                AT.AutoNum("select 盘点单号 from 库存盘点", "库存盘点", "盘点单号", "10001", txt盘点单号);
            }        private void btn生成盘点_Click(object sender, EventArgs e)
            {
                DGV盘点表.Font = new Font("Tahoma", 10);
                数据库连接 con = new 数据库连接();
                SqlConnection conn = con.OpenConn();
                SqlDataAdapter da = new SqlDataAdapter("select 商品编号,商品名称,商品条码,商品规格,商品单位,商品品牌,商品进价,商品售价,商品库存 from 商品档案", conn);
                da.Fill(Mdt);
                Mdt.Columns.Add("盘点单号").SetOrdinal(0);
                Mdt.Columns.Add("盘点数量");
                Mdt.Columns.Add("损益数量");
                Mdt.Columns.Add("损益金额");
                Mdt.Columns.Add("盘点人员");
                Mdt.Columns.Add("盘点日期");
                Mdt.Columns.Add("录入人员");
                Mdt.Columns.Add("录入日期");
                Mdt.PrimaryKey = new DataColumn[] { Mdt.Columns["商品编号"] };//设置主键。
                for (int i = 0; i < Mdt.Rows.Count; i++)
                {
                    Mdt.Rows[i]["盘点日期"] = Convert.ToString(DateTime.Now);
                    Mdt.Rows[i]["盘点单号"] = txt盘点单号.Text;
                }
                DGV盘点表.DataSource = Mdt;
                DGV盘点表.Columns[0].Visible = false;
                DGV盘点表.Columns[7].Visible = false;
                DGV盘点表.Columns[9].Visible = false;
                DGV盘点表.Columns[11].Visible = false;
                DGV盘点表.Columns[12].Visible = false;
                DGV盘点表.Columns[13].Visible = false;
                DGV盘点表.Columns[14].Visible = false;
                DGV盘点表.Columns[15].Visible = false;
                DGV盘点表.Columns[16].Visible = false;
                conn.Close();
                da.Dispose();
            }
            private void btn冻结库存_Click(object sender, EventArgs e)
            {
                数据库连接 con = new 数据库连接();
                SqlConnection conn = con.OpenConn();
                SqlDataAdapter da = new SqlDataAdapter("select * from 库存盘点", conn);
                SqlCommandBuilder cb = new SqlCommandBuilder(da);
                da.Update(Mdt);//当代码执行到这里报错:(对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。)数据库设置主键之后又报错:(违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条。)
                conn.Close();
                da.Dispose();
                cb.Dispose();
                MessageBox.Show("库存冻结成功!冻结时间为:" + DateTime.Now + "", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }之前的也是这么做的,怎么就能插入新的数据。望高手解答!!!
      

  7.   

      SqlConnection conn = con.OpenConn(); 
                SqlDataAdapter da = new SqlDataAdapter("select * from 库存盘点", conn); 
      DataSet ds=new DataSet();
      da.fill(ds,"库存盘点");          
      SqlCommandBuilder cb = new SqlCommandBuilder(da); 
                da.Update(ds,"库存盘点"); 
                conn.Close(); 
                da.Dispose(); 
                cb.Dispose(); 
                MessageBox.Show("更新成功", "系统提示",MessageBoxButtons.OK, MessageBoxIcon.Information); 
      

  8.   

    用SQL Server Profiler看一下
      

  9.   

    是不是由于 SqlCommandBuilder 不能从被其他da对象FILL后的DataTable更新数据库。
    不用da.Fill();我纯手工录入到DataTable中的相同数据就能够写入数据库。用dt的Copy方法复制一个DT也不管用。或者说要从DataGridView中写入到数据库中上万条记录,还有什么方法更好?for循环?