我现在遇到的情况是,我在窗体的加载时打开数据库,然后断开连接,我在datagridview中,修改完数据,再次打开连接,但是dataset中的数据没有变化,但我只要一直保持连接dataset就有变化了,这是怎么回事,哪位高手解答下!

解决方案 »

  1.   

    神马叫一直保持连接?Fill到DataSet不就是无连接状态么.
      

  2.   

    再连接时,要通过DataAdapter更新数据到数据库。
      

  3.   


    编辑单元格后更新数据到数据库,可以在CellEndEdit事件中编写代码,利用SqlCommandBuilder构造SQL语句,利用SqlDataAdapter 将DataSet更新到数据库
    private DataSet ds = new DataSet();
            private SqlDataAdapter da = new SqlDataAdapter();
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {            SqlConnection con = new SqlConnection("server=.;user id=sa;pwd=111;database=A");
                con.Open();
                SqlCommand cmd = new SqlCommand("select * from member", con);
                da.SelectCommand = cmd;
                da.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
            }        private void UpdateData()
            {
                SqlCommandBuilder cbr = new SqlCommandBuilder(da);
                da.Update(ds);
            }
            private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {
                UpdateData();
            }
    你还可以处理
    UserAddedRow 
    UserDeletedRow 
    这几个事件这个例子没关注数据库连接关闭的问题,仅测试更新
      

  4.   

    我要的就是通过断开连接,修改datagridview数据,然后再连接数据库,通过SqlDataAdapter更新数据。
      

  5.   

    不管你断不断开,只要你绑定dataset,在你修改datagridview数据时,dataset数据已修改,你可以连接数据库,通过SqlDataAdapter.Update更新数据
      

  6.   


    你断开连接后,数据在DataSet里面你要想保存数据到数据库,还得重新连接数据库,
      

  7.   


    你将我的代码修改一下呗,很简单啊,在UpdateData方法里面重新写一遍连接数据库的操作
      

  8.   


    private void UpdateData()
            {
                using (SqlConnection con = new SqlConnection("server=.;user id=sa;pwd=111;database=A"))
                {
                    con.Open();
                    SqlCommand cmd = new SqlCommand("select * from member", con);
                    SqlDataAdapter da = new SqlDataAdapter();
                    da.SelectCommand = cmd;
                    SqlCommandBuilder cbr = new SqlCommandBuilder(da);                da.Update(ds);
                }
            }
      

  9.   

    怎么还是不行! 查了下dataset的行数,并未发生变化!
      

  10.   

    Form1上放一个DataGridView和Button
    public partial class Form1 : Form
        {
            private DataSet ds = new DataSet();
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {            using (SqlConnection con = new SqlConnection("server=.;user id=sa;pwd=111;database=A"))
                {
                    con.Open();
                    SqlCommand cmd = new SqlCommand("select * from member", con);
                    SqlDataAdapter da = new SqlDataAdapter();
                    da.SelectCommand = cmd;
                    da.Fill(ds);
                }
                dataGridView1.DataSource = ds.Tables[0];
            }        private void UpdateData()
            {
                using (SqlConnection con = new SqlConnection("server=.;user id=sa;pwd=111;database=A"))
                {
                    con.Open();
                    SqlCommand cmd = new SqlCommand("select * from member", con);
                    SqlDataAdapter da = new SqlDataAdapter();
                    da.SelectCommand = cmd;
                    SqlCommandBuilder cbr = new SqlCommandBuilder(da);
                    da.Update(ds);
                }
            }        private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {
                UpdateData();
            }        private void dataGridView1_UserAddedRow(object sender, DataGridViewRowEventArgs e)
            {
                UpdateData();
            }        private void dataGridView1_UserDeletedRow(object sender, DataGridViewRowEventArgs e)
            {
                UpdateData();
            }        private void button1_Click(object sender, EventArgs e)
            {
                MessageBox.Show(ds.Tables[0].Rows.Count.ToString());
            }
        }
    我添加、删除、修改数据,都能更新到数据库的,而且按钮单击查ds数据,都是正确的
      

  11.   

    楼上的修改后不把DataGridView重新写成DataSet就能保存DataSet更新的数据?真神奇
      

  12.   

    不对吧,你应该还有其他的东西吧,你是怎样把datagridview的数据回写给dataset的??
      

  13.   

    直接对DataSet的Table操作,不要单纯的更改DataGridView
      

  14.   


    那datagridview与dateset没有手工的相互绑定?