日期:2014-05-16  浏览次数:20974 次

C# ADO.NET 更新到数据库失败
for (int i = 0; i < num; i++)
                    {
                        sf.Sda.Update(ds.Tables[i]);//sf:处理数据库的类,Sda即该类的DataAdapter
                    }
我利用这段代码更新,开始我把他放在了一个按钮的单击事件里,可以正常添加,并且保存到数据库里面,我后来把他放到了右键菜单的 “添加行”里面(本来那个按钮单击事件也是为了保存添加的数据的,所以想不用那个单击事件了,直接更新),
private void conMenuS_TNode_Click_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            switch (e.ClickedItem.Text)
            {
                case "添加行":
                    sf.addRow(ds,treeView_ds.SelectedNode.Text.ToString(),num,dataGridView1);
                    for (int i = 0; i < num; i++)//num  数据库中的表的数量
                    {
                        sf.Sda.Update(ds.Tables[i]);
                    }
                    break;
         }
      }
按理说我单击了添加行,调用addRow,我的addRow会调用另外一个窗口类去添加数据并更新到DataSet里面,通过上文提到的单击事件可以确定,ds确实是被添加了一行数据,addRow执行完就应该顺序执行更新数据了啊?请问,怎么没有数据库更新成功

------解决方案--------------------
楼主,断点调试下,看下是不是case语句没执行
------解决方案--------------------
这种问题断点看看数据有没有,一般都是
SqlCommandBuilder scb = new SqlCommandBuilder(sda);
sda.Update(ds);
this.dataGridView1.DataSource = ds.Tables[0];
你这里or (int i = 0; i < num; i++)//num  数据库中的表的数量
                    {
                        sf.Sda.Update(ds.Tables[i]);
                    }
直接更新ds就行了,不用循环