【发布时间】:2014-12-24 16:10:23
【问题描述】:
在我的 C# 代码中,我将填充字典。 我需要以最有效的方式将这些数据放入 MySQL 表中。
是否可以将其传递给 MySQL 存储过程?我想我可以将它传递到某种带有逗号等的字符串中,这样存储过程就可以调用一个函数来解析字符串并填充表格,但这很痛苦。
还有其他想法吗?
谢谢!
基于到目前为止的 cmets,让我尝试展示我正在处理的代码/sudocode。 构建字典的代码如下所示:
private void DistributeCallsToReschedule()
{
CallTimeSpacing = GetNumMinutesInNextCallWindow() / callsToReschedule.Count;
DateTime currTimeToCall = new DateTime();
foreach (int id in callsToReschedule)
{
CallIdTimeToCallMap.Add(id, currTimeToCall);
currTimeToCall.AddMinutes(CallTimeSpacing);
}
}
所以,字典可以包含我的条目。
我希望我能做的是将字典传递给存储过程,如下所示。 如果这不可能,那么执行存储过程指示的最有效方法是什么? IE, 存储过程希望有一个要加入的表,该表将字典中的数据填充到 C# 代码中。换句话说,将字典的数据放入 MySQL 中的表中最有效的方法是什么?如果这不可能,而且我必须循环,那么最有效的方法是什么:迭代调用存储过程?构建一个包含所有值的准备好的语句(我想是通过 StringBuilder 构建的)?
通过 C# 代码传递给存储过程的参数:
@CallIdTimeToCallMap
将@CallIdTimeToCallMap 放入CallIdTimeToCallMapTable;
更新 cr 设置 cr.TimeToCall = map.TimeToCall 来自 callRequest cr 内部加入 CallIdTimeToCallMapTable 映射 cr.id = map.id
【问题讨论】:
-
为什么要使用存储过程而不是简单的插入语句?
-
您可以创建一个接收 List
对象的函数,并且在该函数内部有一个执行插入的 foreach 循环,为什么不只创建一个简单的插入存储过程.. 显示你的到目前为止已经尝试过或您正在尝试通过代码执行的操作...
标签: c# mysql stored-procedures