如何获取对数据集的更改并将更改保存到数据库

时间:2018-09-12 13:43:50

标签: c# sql-server

我有一个程序,可以从数据库中读取数据并将其显示在电子表格控件(devexpress)上。 我需要您的帮助,以使该程序可以更改button_click上的数据集,然后将其保存回数据库中。 谢谢

这是代码段

for row in right_table.find_all('tr'):
    print(row)

这将绑定数据源

        mentwall_DataDataSet ds = new mentwall_DataDataSet();
        mentwall_DataDataSetTableAdapters.DATABASETableAdapter databaseAdapter = new mentwall_DataDataSetTableAdapters.DATABASETableAdapter();
        databaseAdapter.Fill(ds.DATABASE);
        dv = new DataView(ds.DATABASE);

        mentwall_DataDataSet ds2 = new mentwall_DataDataSet();
        mentwall_DataDataSetTableAdapters.RegsTableAdapter regsAdapter = new mentwall_DataDataSetTableAdapters.RegsTableAdapter();
        regsAdapter.Fill(ds2.Regs);
        dv2 = new DataView(ds2.Regs);

1 个答案:

答案 0 :(得分:0)

我做的完全一样,一个应用程序在DevExpress网格控件(Windows窗体)中显示SQL表的内容,当我单击“保存”按钮时,所有更改(包括添加的新行或删除的行)都保存到SQL中服务器数据库,这是我的DAL类的代码片段,用于处理保存的数据库逻辑:

这里的要点是使用SqlCommandBuilder类,该类必须至少使用select命令初始化,然后所有其他命令都将自动生成,我已经编写了此代码> 5年前,并且我仍每天使用此应用程序。

public int UpdateSQLDataTable(string connectionString, string TableName, DataTable dtSource)
{
    try
    {
        using (SqlConnection sConn = new SqlConnection(connectionString))
        {
            sConn.Open();

            var transaction = sConn.BeginTransaction();

            try
            {
                var command = sConn.CreateCommand();
                command.Transaction = transaction;

                command.CommandText = $"SELECT TOP 1 * FROM {TableName} WITH (NOLOCK)";
                command.CommandType = CommandType.Text;

                // timeoput of 5 minutes
                command.CommandTimeout = 300;

                SqlDataAdapter sAdp = new SqlDataAdapter(command);

                SqlCommandBuilder sCMDB = new SqlCommandBuilder(sAdp);

                int affectedRecords = sAdp.Update(dtSource);

                transaction.Commit();

                return affectedRecords;
            }
            catch (Exception /* exp */)
            {
                transaction.Rollback();

                throw;
            }
        }
    }
    catch (Exception exc)
    {
        Logger logger = new Logger();
        logger.Error(string.Format("connectionString: '{0}', TableName: '{1}'", connectionString, TableName), exc);

        return int.MinValue;
    }
}