代码:
int total = Convert.ToInt32(form["REC-tr-total"]);
int value = 0;
string insValOutput = "";
if (total > 0)
{
for (int i = 1; i <= total; i++)
{
value = Convert.ToInt32(form["inventoryID[" + i + "]"]);
insValOutput = $"(" + vCAS_capture_payments.Id + ", value{i + 1}),";
}
db.Database.ExecuteSqlCommand(String.Format(@"INSERT INTO dbo.VCAS_capture_payments__REF_items (FK_capture_paymentsId, FK_inventoryId) VALUES {0};", insValOutput));
}
错误信息:
这似乎是一个非常简单的循环,但错误不断出现......专家请指教。
更新:
对于那些询问的人,我已更新此行如下:
insValOutput = String.Format(@"({0},{1}),", vCAS_capture_payments.Id, value); // (1, value1),(2, value2) ...
但结果相同
看起来您正在尝试构建传递给插入语句的值列表。 您希望结果为 Values (itemA1, itemA2), (itemB2, itemB2), ... 如果这是不正确的,则答案的其余部分可能不相关。
错误出现在构建此集合的行中:
insValOutput = $"(" + vCAS_capture_payments.Id + ", value{i + 1}),";
您在构建值集合的条件中存在一些问题......
第一个问题是你只会有 1 个(itema、itemb)集合,因为你没有附加到 insValOutput 变量。 实际上,每次执行循环时都会覆盖它。
第二个是,一旦清除“{”的错误,您将收到逗号错误,因为您在文本末尾添加了逗号,而最后一个元素需要省略逗号。
第三个是您现在收到的具体错误。
insValOutput = $"(" + vCAS_capture_payments.Id + ", value{i + 1}),";
当前,您实际上将字符串“value{i + 1}”放入 insValOutput 中,错误表明大括号语法不正确。
我想你正在寻找的是这个:
$"({vCAS_capture_payments.Id}, value{i + 1}),"
但即使纠正了这一点,您仍然会遇到上述问题。
您应该重新审视如何构建此 Values 集合,然后您应该捕获您传递的整个语句,以便双方都可以校对它,然后在 SMS 会话中执行它以检查错误。
正如其他人所指出的,这也不是在应用程序中构建查询的好方法。 您绝对应该考虑重构您的代码以及它如何构建查询。