在不使用 DataAdapter.Fill 的情况下更新数据表 2 次

Posted

技术标签:

【中文标题】在不使用 DataAdapter.Fill 的情况下更新数据表 2 次【英文标题】:Update the datatable without using DataAdapter.Fill 2 times 【发布时间】:2014-01-04 01:11:49 【问题描述】:

我正在编写一个管理办公室的程序。 (摆脱 Excels XD)。

我有一个包含以下变量的 DAL 类:

    private mysqlConnection connection;
    private DataSet ds;
    private Hashtable adapters;

有这个方法:

    public bool AddTable(string tableName, string sqlStat)
    
        if (!ds.Tables.Contains(tableName))
        
            MySqlDataAdapter adapter = new MySqlDataAdapter(sqlStat, connection);
            MySqlCommandBuilder builder = new MySqlCommandBuilder(adapter);
            adapter.InsertCommand = builder.GetInsertCommand();
            adapter.UpdateCommand = builder.GetUpdateCommand();
            adapter.DeleteCommand = builder.GetDeleteCommand();
            adapter.Fill(ds, tableName);
            adapters.Add(tableName, adapter);
            return true;
        
        return false;
    

程序将连接到带有 MySQL 数据库的服务器。 我需要确保当一个客户端更改数据库中的某些内容时,另一个客户端会看到新数据,但这不会发生。

【问题讨论】:

我们需要更多信息。什么是更新命令?其他客户端如何选择(最近更新的)数据? 程序有多个实例同时运行。都打开同一张桌子。该程序向他们显示所有信息。 (他们看到同一张桌子)。然后其中一个编辑表格并保存。 (MySQL_Database 已保存编辑)。现在 :: 第二个在重新启动程序之前不会看到所做的编辑。我需要,想要并且必须使第二个只需要刷新显示表格的表单。 【参考方案1】:

您需要阅读乐观并发,这有助于解决多个用户同时读取和更新相同数据的问题。

我建议你从这里开始:

http://msdn.microsoft.com/en-us/library/aa0416cz%28v=vs.110%29.aspx http://www.codeproject.com/Articles/114262/6-ways-of-doing-locking-in-NET-Pessimistic-and-opt

【讨论】:

我不知道怎么做。但是在我阅读了微软关于这个主题的信息之后,我的代码中现在出现了这个错误,而只有一个正在运行的程序实例。我以为自动更新命令有问题,但我检查了参数,我发现没有问题..

以上是关于在不使用 DataAdapter.Fill 的情况下更新数据表 2 次的主要内容,如果未能解决你的问题,请参考以下文章

向 dataAdapter.fill() 添加参数

如何提高 dataadapter.fill 的性能?

使用 C# dataAdapter.Fill() 和 dataAdapter.Update() 将表的数据从一个数据库传输到另一个数据库的同一个表

如何同时执行 DataAdapter.Fill()

DataAdapter.Fill(数据集)

DB2DataAdapter.Fill(dataset) 抛出错误“SQL0901N(原因“CPF4273”。)SQLSTATE=58004”