public partial class bm : Form
    {
        public bm()
        {
            InitializeComponent();
        }        DataBase db = new DataBase(); //自行开发的数据库连接类,保证没问题
        DataSet ds = new DataSet();
        SqlDataAdapter da;
        DataRow dr;
        SqlCommandBuilder scb;        private void bm_Load(object sender, EventArgs e)
        {
            db.Open();
            da = new SqlDataAdapter("select * from bm", db.con);
            da.Fill(ds);
            scb = new SqlCommandBuilder(da);
            dataGridView1.DataSource = ds.Tables[0];
        }        private void bm_FormClosed(object sender, FormClosedEventArgs e)
        {
            db.Close();
        }        private void 存盘按钮_Click(object sender, EventArgs e)
        {
            da.Update(ds);
        }
}
请问:为什么点击“存盘按钮”时,数据库无法立即更新(因为我想要数据库立即得到更新)?必须关闭窗口后数据库才会更新?不知是何原因? 请各位高手赐教!

解决方案 »

  1.   

     db.Open();
    db.Close();
    这两句可以不要
      

  2.   

    因为数据库的更新必须要关闭连接!你这个db.Close();是写在窗口关闭事件里面的,所以才会关闭后才能更新
      

  3.   

    bm_FormClosed  改成 bm_FormClosing 试下
      

  4.   

     db.Open();db.Close();这两个可以加在db.Close();或da.Update(ds);的前后,bm_Load 进入的时候判断是否Open;不过这就太重复代码;可以试下专门写几个方法,分别执行查询,更新,添加,删除;以后直接传入SQL语句调用方法就可以了
      

  5.   

    不好意思,是我搞错了!在修改数据时更新了dataGridView的单元格,现在我将它改为更新dataTable,Update就立即能更新数据库了。