我目前正试图尝试从我的简单的C#应用程序捕获插入SQL查询,但是当我试图插入数据到数据库与用户ID将其添加到userIDList参数中,则出现错误提示哪里在条款错误服务器上最多只支持2100参数
传入请求的参数太多。服务器最多支持210035个参数。
userIDList有时会包含上面的60个数组,然后错误会弹出。
我的SQL的CommandText将包含
"SELECT * FROM TIME_ATTENDANCE_REPORT WHERE TRXDATETIME = @Date AND USERID IN (001,002,003,004,....)
所以我想如果更多然后一定数量,则错误弹出
这里是我的示例代码:
List<string> userIDList = new List<string>();
using (SqlCommand sqlDBComm = new SqlCommand())
{
openConnection();
SqlDataReader sqlDBReader;
sqlDBReader = null;
sqlDBComm.CommandText = "SELECT * FROM TIME_ATTENDANCE_REPORT WHERE TRXDATETIME = @Date AND USERID IN (" + string.Join(",", userIDList) + ") ORDER BY USERID ASC ";
sqlDBComm.Parameters.Add("@Date", SqlDbType.DateTime);
sqlDBComm.Parameters["@Date"].Value = GetDateFrom;
sqlDBComm.Connection = sqlDB;
sqlDBComm.CommandType = CommandType.Text;
try
{
sqlDBReader = sqlDBComm.ExecuteReader();
t.Load(sqlDBReader);
sqlDBReader.Close();
if (t.Rows.Count > 0)
{
status = "Update";
}
else
{
status = "Insert";
}
}
catch (Exception errMsg)
{
MessageBox.Show("Error Code: " + errMsg.ToString());
}
finally
{
sqlDBReader.Close();
closeConnection();
}
}
任何其他解决办法可以解决这个? 谢谢
可能的复制。该服务器最多支持2100个参数](http://stackoverflow.com/questions/23045912/the-incoming-request-has-too-many-parameters-the-server-supports-a-maximum-of-2) –
这有点奇怪,因为你*没有使用参数*(你可能应该是,btw);你也没有使用LINQ,所以你可能不需要这个标签。但是,问题:你使用的是什么版本的sql-server?最简单的“修复”可能是'string_split',但那只是2016年;否则,自定义拆分UDF或表值参数可能是很好的替代品。但是:你确定示例代码是错误的代码吗?因为*不会创建大量参数*(只有2) –
@MarcGravell我正在使用SQL Server 2014,您是什么意思自定义拆分UDF? –