程序中的任何更改都不会影响数据库

时间:2011-12-05 20:52:09

标签: c# wpf ado.net

问题是 - 当程序正在运行时,我在datagrid中更改,添加和删除数据。 但是当我重新启动程序时 - 它从数据库加载所有数据而不做任何更改。(只添加数据工作)。

哪里有问题?

 public partial class StudentsTable : Window
{
    public StudentsTable()
    {
        InitializeComponent();
    }
    CourseWorkFinal.University0DataSet university0DataSet;
    CourseWorkFinal.University0DataSetTableAdapters.StudentsTableAdapter university0DataSetStudentsTableAdapter;
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {

        university0DataSet = ((CourseWorkFinal.University0DataSet)(this.FindResource("university0DataSet")));
        university0DataSetStudentsTableAdapter = new CourseWorkFinal.University0DataSetTableAdapters.StudentsTableAdapter();
        university0DataSetStudentsTableAdapter.Fill(university0DataSet.Students);
        System.Windows.Data.CollectionViewSource studentsViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("studentsViewSource")));
        studentsViewSource.View.MoveCurrentToFirst();
        university0DataSet.Students.StudentsRowChanged += new University0DataSet.StudentsRowChangeEventHandler(Modify);
        university0DataSet.Students.StudentsRowDeleted +=
            new University0DataSet.StudentsRowChangeEventHandler(Modify);

    }
    void Modify(object sender, University0DataSet.StudentsRowChangeEvent e)
    {
        university0DataSetStudentsTableAdapter.Update(university0DataSet.Students);
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        AddStudent x = new AddStudent();
        x.Show();
    }

    private void button2_Click(object sender, RoutedEventArgs e)
    {
    //    university0DataSetStudentsTableAdapter.Update(university0DataSet.Students);
    }
}

2 个答案:

答案 0 :(得分:1)

您必须将DataGridView中新添加的数据实际保存回数据库;它没有自动执行。

如果您想获得更自动的内容,可以尝试设置BindingSource。这是一个关于

的教程

http://msdn.microsoft.com/en-us/library/fbk67b6z.aspx

答案 1 :(得分:1)

要么您没有提交更改,要么使用某种类型的实例数据库作为项目的一部分,因此每次从Visual Studio编译/运行时都会被原始数据库覆盖。

需要提供有关如何设置数据库的更多详细信息,以便提供更好的答案。