我目前正試圖嘗試從我的簡單的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? –