c# - 插入带有 for 循环错误的查询

标签 c# sql for-loop

我的简单 C# 应用程序有问题。当我循环 datagridview 行计数,然后相应地插入数据时,它会在循环到 58 后抛出以下错误:

the incoming request has too many parameters...

但我已经检查了几次循环和查询,似乎没有任何问题。

for (int i = 0; i < dailyReportGridView.Rows.Count - 1; i++)
{
    StrQuery =
        @"INSERT INTO TIME_ATTENDANCE_REPORT VALUES (@CHECKTIME" + i + ", @BADGENUMBER" + i + ", @NAME" + i +
        ", @IN1" + i + ", @OUT1" + i + ", @IN2" + i + ", @OUT2" + i + ", @IN3" + i + ", @OUT3" + i +
        ", @IN4" + i + ", @OUT4" + i + ", @IN5" + i + ", @OUT5" + i + ", @WORKDAY" + i + ", @OT" + i + ", @SUNDAYHOUR" + i +
        ", @SUNDAYOT" + i + ", @PHWORK" + i + ", @PHOT" + i + ", @LEAVE" + i + ", @REMARK" + i + ", @LEAVENAME" + i + ", @DEPT" + i + ", @STARTSPECDAY" + i +
        ", @ENDSPECDAY" + i + ", @EDITED" + i + ", @EDITREASON" + i + ", @DEDUCTION" + i + ", @DOUBLESHIFT" + i +
        ", @TOTALAL" + i + ", @TOTALUL" + i + ", @TOTALSL" + i + ", @TOTALOL" + i + ", @TOTALML" + i + ", @TOTALBT" + i + ", @SYNCBY" + i + ")";
    comm.Parameters.Add("@CHECKTIME" + i, SqlDbType.DateTime);
    comm.Parameters["@CHECKTIME" + i].Value = dailyReportGridView.Rows[i].Cells["DATE"].Value;
    comm.Parameters.Add(new SqlParameter("BADGENUMBER" + i, dailyReportGridView.Rows[i].Cells["BADGENUMBER"].Value));
    comm.Parameters.Add(new SqlParameter("NAME" + i, dailyReportGridView.Rows[i].Cells["NAME"].Value));
    comm.Parameters.Add(new SqlParameter("IN1" + i, dailyReportGridView.Rows[i].Cells["IN_1"].Value));
    comm.Parameters.Add(new SqlParameter("OUT1" + i, dailyReportGridView.Rows[i].Cells["OUT_1"].Value));
    comm.Parameters.Add(new SqlParameter("IN2" + i, dailyReportGridView.Rows[i].Cells["IN_2"].Value));
    comm.Parameters.Add(new SqlParameter("OUT2" + i, dailyReportGridView.Rows[i].Cells["OUT_2"].Value));
    comm.Parameters.Add(new SqlParameter("IN3" + i, dailyReportGridView.Rows[i].Cells["IN_3"].Value));
    comm.Parameters.Add(new SqlParameter("OUT3" + i, dailyReportGridView.Rows[i].Cells["OUT_3"].Value));
    comm.Parameters.Add(new SqlParameter("IN4" + i, dailyReportGridView.Rows[i].Cells["IN_4"].Value));
    comm.Parameters.Add(new SqlParameter("OUT4" + i, dailyReportGridView.Rows[i].Cells["OUT_4"].Value));
    comm.Parameters.Add(new SqlParameter("IN5" + i, dailyReportGridView.Rows[i].Cells["IN_5"].Value));
    comm.Parameters.Add(new SqlParameter("OUT5" + i, dailyReportGridView.Rows[i].Cells["OUT_5"].Value));
    comm.Parameters.Add(new SqlParameter("WORKDAY" + i, dailyReportGridView.Rows[i].Cells["WorkDay"].Value));
    comm.Parameters.Add(new SqlParameter("OT" + i, dailyReportGridView.Rows[i].Cells["OT"].Value));
    comm.Parameters.Add(new SqlParameter("SUNDAYHOUR" + i, dailyReportGridView.Rows[i].Cells["SundayHour"].Value));
    comm.Parameters.Add(new SqlParameter("SUNDAYOT" + i, dailyReportGridView.Rows[i].Cells["SundayOT"].Value));
    comm.Parameters.Add(new SqlParameter("PHWORK" + i, dailyReportGridView.Rows[i].Cells["PH(hr)"].Value));
    comm.Parameters.Add(new SqlParameter("PHOT" + i, dailyReportGridView.Rows[i].Cells["PH OT(hr)"].Value));
    comm.Parameters.Add(new SqlParameter("LEAVE" + i, dailyReportGridView.Rows[i].Cells["Leave"].Value));
    comm.Parameters.Add(new SqlParameter("REMARK" + i, dailyReportGridView.Rows[i].Cells["Remark"].Value));
    comm.Parameters.Add(new SqlParameter("LEAVENAME" + i, dailyReportGridView.Rows[i].Cells["LeaveName"].Value));
    comm.Parameters.Add(new SqlParameter("DEPT" + i, dailyReportGridView.Rows[i].Cells["Dept"].Value));
    comm.Parameters.Add(new SqlParameter("STARTSPECDAY" + i, dailyReportGridView.Rows[i].Cells["StartSpecDay"].Value));
    comm.Parameters.Add(new SqlParameter("ENDSPECDAY" + i, dailyReportGridView.Rows[i].Cells["EndSpecDay"].Value));
    comm.Parameters.Add(new SqlParameter("EDITED" + i, dailyReportGridView.Rows[i].Cells["Edited"].Value));
    comm.Parameters.Add(new SqlParameter("EDITREASON" + i, dailyReportGridView.Rows[i].Cells["Edit Reason"].Value));
    comm.Parameters.Add(new SqlParameter("DEDUCTION" + i, dailyReportGridView.Rows[i].Cells["Deduction"].Value));
    comm.Parameters.Add(new SqlParameter("DOUBLESHIFT" + i, dailyReportGridView.Rows[i].Cells["Double Shift"].Value));
    comm.Parameters.Add(new SqlParameter("TOTALAL" + i, dailyReportGridView.Rows[i].Cells["TotalAL"].Value));
    comm.Parameters.Add(new SqlParameter("TOTALUL" + i, dailyReportGridView.Rows[i].Cells["TotalUL"].Value));
    comm.Parameters.Add(new SqlParameter("TOTALSL" + i, dailyReportGridView.Rows[i].Cells["TotalSL"].Value));
    comm.Parameters.Add(new SqlParameter("TOTALOL" + i, dailyReportGridView.Rows[i].Cells["TotalOL"].Value));
    comm.Parameters.Add(new SqlParameter("TOTALML" + i, dailyReportGridView.Rows[i].Cells["Maternity"].Value));
    comm.Parameters.Add(new SqlParameter("TOTALBT" + i, dailyReportGridView.Rows[i].Cells["BusinessTrip"].Value));
    comm.Parameters.Add(new SqlParameter("SYNCBY" + i, lblUserName.Text.ToString()));
    comm.CommandText = StrQuery;
    comm.ExecuteNonQuery();
}

不知何故错误出现在代码 comm.ExecuteNonQuery() 行。有什么解决办法吗?

最佳答案

comm.ExecuteNonQuery() 之后添加 comm.Parameters.Clear(); - 它应该在每次迭代时执行。否则你会多次添加参数。

关于c# - 插入带有 for 循环错误的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41019702/

相关文章:

mysql - 需要帮助创建数据库结构

sql - "(X row(s) affected)"究竟是什么意思?

php - 将循环减少为一个-仅限提示

java - 给定一个整数数组,反转每个最大严格升序子数组

c# - 如何使 .net HttpClient 使用 http 2.0?

c# - 为什么 .NET foreach 循环在集合为空时抛出 NullRefException?

c# - C/C# Marshal.PtrToStringAnsi 中文乱码

c# - 使用 Razor 渲染 Html 代码

sql - 比较 SQL Server 中由特殊字符分隔的值

javascript - javascript,我们如何创建一个对象,在创建两个数组之前迭代它们,这两个数组是键/值对?