数据库中的数据发生了变化,如何更新DataSet中的值呢?
假设有2个程序均可以修改数据库中的数据。那么在A程序更新数据库之后,B程序如何刷新可以获得当前数据库中的值呢?
1.使用dataAdapter.Fill(m_DS.Table[0]),发现每次调用后,数据是被重复追加进表中的。
2.使用主键的方法:
dataAdapter = new MySqlDataAdapter(sSql, m_Conn);
dataAdapter.Fill(m_DS.Tables[0]);
DataColumn[] keys = new DataColumn[1];
keys[0] = m_DS.Tables[1].Columns[0];
m_DS.Tables[1].PrimaryKey = keys;
之后调用dataAdapter.Fill(m_DS.Table[0]),发现数据更新了,没有再追加重复数据。
可是,当数据库中某一条记录被删除,如A程序删除了某条记录,B程序调用Fill后,被删除的数据仍旧存在,没有从DataSet中去掉。
3.使用如下方法:
dataAdapter= new MySqlDataAdapter(sSql, m_Conn);
m_DS.Tables[0].Clear();
dataAdapter.Fill(m_DS.Tables[0]);
此时数据确实完全更新,但是我觉得这种方法会导致每次都是更新全部数据,与数据库通讯量太大,很多是浪费的。尤其是当数据库中存在blob大数据量的数据时,每次更新UI时,获取数据的速度会很慢,其中绝大部分blob的数据是不需要更新的。
请教有没有最佳的办法呢?