我写了循环 可只修改其中一部分的单元格 最后没修改的就重复了 所以这个方法不行 那如何才能实现修改的功能呢?谢谢!(因为dataGridView1里的数据来源于数据库多个表,故不能用整个表一起更新,只能这样逐一的更新了)

解决方案 »

  1.   

    别顶了,百度 dataGridView更新数据库
      

  2.   

    LZ,应该自己定制一个dataGridView控件.
    让每个单元格继承修改数据的方法(用以更新数据库)
    整表更新不合理,整行更新不理想,只更新单个数据更好.
      

  3.   

    “dataGridView1里的数据来源于数据库多个表”,你是用的视图吗?既然你向用dataGridView控件直接增删改数据,那么最好直接对于具体数据库表!
    根据DataRowState的行状态,DataAdapter.Update 将更新数据库。
      

  4.   

    我用的是联合查询,和视图差不多,你说的方法我也试过,用DataAdapter.Update时它找不到修改的值究竟是属于哪个数据库,故要报错,只有一一Update了。求更详细的办法。
      

  5.   

    我这样做的肯定不行,没改的就全重复了,数据表中有主键,这样是行不通,可我想一一更新,可不知道怎么判断是否已修改,再说这样效率很低的,有没有好的办法啊
                try
                {
                    using (SqlConnection conn = new SqlConnection("server=.;database=NBA;uid=sa;pwd="))
                    {
                        conn.Open();
                        for (int i = 0; i < intCountBeg - 1; i++)
                        {
                            SqlCommand cmd3 = new SqlCommand("update player set 球衣号='" + dataGridView1[0, i].Value.ToString() + "',球员='" + dataGridView1[1, i].Value.ToString() + "', 球队='" + dataGridView1[2, i].Value.ToString() + "'", conn);
                            SqlCommand cmd4 = new SqlCommand("update basketball set 球员='" + dataGridView1[1, i].Value.ToString() + "',位置='" + dataGridView1[3, i].Value.ToString() + "'", conn);
                            cmd3.ExecuteNonQuery();
                            cmd4.ExecuteNonQuery();
                            cmd3.Dispose();
                            cmd4.Dispose();
                        }
                        MessageBox.Show("更新成功!");
                        conn.Close();
      

  6.   

    楼主,你明白我的意思,既然你用联合查询(其实就是视图),那你最好只用来做显示用!因为联合查询对于数据表来说,它们并不是真正的源!要借助datagridview对数据库表进行增删改操作,就针对具体的一个表。
      

  7.   

    我看了 一般的update command只能针对一个表,对于多个表,要自己写数据适配器的update command,这怎么写啊 有人会吗。此方法也许能行!
      

  8.   

    我现在自定义的适配器 可说有语法错误 大家帮我看看 错在哪儿啊 我实在找不出啊
                        sda.UpdateCommand = new SqlCommand("update player set [球衣号]=@球衣号,[球员]=@球员,[球队]=@球队 where [球衣号]=@Original_球衣号,[球员]=@Original_球员,[球队]=@Original_球队", conn);
                        sda.UpdateCommand.Parameters.Add(new SqlParameter("@Original_球衣号", SqlDbType.VarChar, 50,  "球衣号"));
                        sda.UpdateCommand.Parameters.Add(new SqlParameter("@球衣号", SqlDbType.VarChar, 50, "球衣号"));
                        sda.UpdateCommand.Parameters.Add(new SqlParameter("@Original_球员", SqlDbType.VarChar, 50, "球员"));
                        sda.UpdateCommand.Parameters.Add(new SqlParameter("@球员", SqlDbType.VarChar, 50,"球员"));
                        sda.UpdateCommand.Parameters.Add(new SqlParameter("@Original_球队", SqlDbType.VarChar, 50,"球队"));
                        sda.UpdateCommand.Parameters.Add(new SqlParameter("@球队", SqlDbType.VarChar, 50, "球队"));
                        sda.Update(ds.Tables[0]);