首页 > 解决方案 > 如何使用 DataGrid C# WPF 更新数据库?

问题描述

我想用 dataGrid 更新数据库(SQLite)。我可以更改 dataGrid 中的值,但更改不适用于数据库,这就是为什么我要添加一个按钮“保存”来保存在 dataGrid 中应用的所有更改,

我搜索了这个问题,但我找不到答案

这是我填充 DataGrid 的 C# 代码:

SQLiteConnection sQLiteConnection = new SQLiteConnection("Data source = dataSet.db ; version = 3 ;");
        SQLiteCommand sQLiteCommand; 
        SQLiteDataAdapter sQLiteDataAdapter; 
        System.Data.DataTable dataTable = new System.Data.DataTable("Naamaa");
        SQLiteCommandBuilder cmd;
        DataSet ds;
        public ManipulateData(string wilaya, int theme)
        {
            InitializeComponent();

            try
            {
                sQLiteConnection.Open();
                sQLiteCommand = new SQLiteCommand(sQLiteConnection);
                sQLiteCommand.CommandText = "SELECT * FROM " + wilaya + " ;";
                sQLiteCommand.ExecuteNonQuery();
                sQLiteDataAdapter = new SQLiteDataAdapter(sQLiteCommand);
                sQLiteDataAdapter.Fill(dataTable);

                McDataGrid.ItemsSource = dataTable.DefaultView;


            }catch
            {
                MessageBox.Show("Error");
            }
        }

这是 xaml 代码:

<Grid Background="White">
        <DataGrid x:Name="McDataGrid"  />
</Grid>

标签: c#databasewpfsqlitedatagrid

解决方案


我目前正在做一些非常相似的事情,只是我使用的是 Postgres。

一种简单的方法是将 DataGridView.ReadOnly 属性设置为 true,然后当用户在 DataGridView 中选择一行时,您可以启动一个 Windows 窗体,其中包含该选定行中的所有数据和一个“保存”按钮来更新数据数据库。然后从该按钮,您只需使用从表单收集的数据启动对数据库的更新查询。

如果您想修改 DataGridView 本身的数据,事情会变得更加复杂,因为您需要跟踪在 DataGridView 上编辑了哪些行(除非您不关心优化并且可以对每一行进行更新,不不管它是否已被编辑)。您可以对所有修改的行使用 DataGridViewRow 列表。

这可以理解吗?不太习惯写英文,特别是在相当复杂的事情上。


推荐阅读