1

我目前正在尝试通过ODBC创建一个需要过程名称作为字符串以及一组键和值作为字典的函数来抽象存储过程的调用。正因为如此,我必须为它建立一个字符串ODBC Command……是的,很傻。

CALL myProcedure(?, ?, ?, ?)

然后使用 ODBC 命令对象:

odbcCommand.Parameters.AddWithValue("key", "param");

现在为了添加参数,我可以轻松地做一个foreach. 甚至是带有Select. 但是我还必须创建CALL带有问号的-string,我必须小心这样的事情永远不会发生:

CALL myProcedure(?, ?, ?, )

所以我必须在字典中循环一次以添加参数,第二次将键和值连接到字符串(String.Join),或者我用FOR-loop 循环所有内容,并且必须检查当前KeyValuePair是否是最后一个以防止在字符串末尾意外逗号。

有没有一种方法可以让我声明“ CALL myProcedure”甚至类似的东西

odbcCommand.CommandType = CommandTypes.StoredProcedure;
odbcCommand.ProcedureName = "myProcedure";
[LOOP]
     - add Params damn comfortable
[/LOOP]

我希望有..它会帮助我减少因为废话而需要的额外步骤!

谢谢

4

1 回答 1

1

添加参数后,使用以下命令:

int paramCount = odbcCommand.Parameters.Count();
string[] placeholders = Enumerable.Repeat("?", paramCount).ToArray();
string callParams = String.Join(", ", placeholders);

然后,您不再需要小心避免 CALL 字符串中引用的尾随逗号。(我意识到这并不能完全回答您消除占位符的问题。)

于 2013-10-31T20:43:43.090 回答