【发布时间】:2015-05-20 09:10:15
【问题描述】:
我正在处理一些遗留代码,试图了解它是如何工作的。
代码有一个MySqlCommand,它调用存储过程来填充DataTable,如下所示:
_apptCmd = new MySqlCommand("CALL get_appointments(@date)", _systemState.Connection);
_apptCmd.Parameters.AddWithValue("@date", endDateDte.DateTime.Date);
_apptDa = new MySqlDataAdapter(_apptCmd);
_apptDa.Fill(_scheduleDataSet.appointments);
_apptCb = new MySqlCommandBuilder(_apptDa);
_scheduleDataSet 是一个 c# DataSet 文件,约会是一个在其中配置的 DataTable。我认为这就是更新的原因,但我不知道为什么。
这用于填充用户可以在应用程序中操作的表格。稍后,在完成所有更改后,通过DataAdapter.Update() 函数将更改持久化到数据库中。
if (_scheduleDataSet.appointments.GetChanges() != null && _apptDa != null)
{
if (_apptCb == null)
{
_apptCb = new MySqlCommandBuilder(_apptDa);
}
_apptDa.Update(_scheduleDataSet.appointments);
}
调试的时候,所有的命令都是空的,说明有一个变化是UpdateBatchSize的一部分
这段代码工作得很好,但是当没有.Insert() 或.Update() 功能被定义为数据适配器的一部分时,它怎么知道更新数据库中的相应表?
更新
根据要求,我添加了一个消息框来显示更新次数。
【问题讨论】:
-
你怎么知道有任何变化,我很确定没有任何变化。
-
@PhilipStuyck 我检查了数据库并确认更改已保留。
-
命令生成器将为您即时生成插入和更新命令。
-
@PhilipStuyck 是否有任何地方的文档?我搜索了 MSDN 并没有看到任何表明这一点的内容。
标签: c# mysql dataadapter