Iam getting error unknown error недостаточно параметров предоставленных команде
if (planDS.Tables.Contains("CloudBackupSchedule")) { dt = planDS.Tables["CloudBackupSchedule"]; if (dt != null && dt.Rows.Count > 0) { //Get field names string sqlString = "UPDATE CloudBackupSchedule SET "; var sqlParams = new string[dt.Rows[0].ItemArray.Count() + 1]; int count = 0; foreach (DataColumn dc in dt.Columns) { if (dc.ColumnName.ToLower() == "baseplan_id") { sqlString += "PlanId = @PlanId, "; sqlParams[count] = "@PlanId"; count++; sqlString += "BackupScheduleId = @BackupScheduleId,"; sqlParams[count] = "@BackupScheduleId"; count++; } else { sqlString += string.Format("{0} = @{0},", dc.ColumnName); sqlParams[count] = string.Format("@{0}", dc.ColumnName); count++; } } //create query from fields sqlString = sqlString.TrimEnd(new char[] { ',', (char)32 }) + " WHERE Planid = @planid And BackupScheduleId = @BackupScheduleId"; cGlobalSettings.oLogger.WriteLog(string.Format("Query={0}", sqlString)); sqlCmd.CommandText = sqlString; foreach (DataRow dr in dt.Rows) { for (int i = 0; i < sqlParams.Length; i++) { if (sqlParams[i] != null) { if (sqlParams[i].TrimStart(new char[] { '@' }) == "PlanId") { sqlCmd.Parameters.AddWithValue(sqlParams[i], planid); cGlobalSettings.oLogger.WriteLog(string.Format("{2}. Parameter={0},Value={1}", sqlParams[i], planid, i)); } else if (sqlParams[i].TrimStart(new char[] { '@' }) == "BackupScheduleId") { sqlCmd.Parameters.AddWithValue(sqlParams[i], planid); cGlobalSettings.oLogger.WriteLog(string.Format("{2}. Parameter={0},Value={1}", sqlParams[i], planid, i)); } else { sqlCmd.Parameters.AddWithValue(sqlParams[i], dr[sqlParams[i].TrimStart(new char[] { '@' })] ?? DBNull.Value); cGlobalSettings.oLogger.WriteLog(string.Format("{2}. Parameter={0},Value={1}", sqlParams[i], dr[sqlParams[i].TrimStart(new char[] { '@' })] ?? "NoValue", i)); } } } try { rowsAffected = 0; rowsAffected = sqlCmd.ExecuteNonQuery(); cGlobalSettings.oLogger.WriteLog(string.Format("Rows affected= {0}", rowsAffected)); } catch (Exception ex) { cGlobalSettings.oLogger.WriteLogException("cSqliteFunction.cs::ExecuteNonQuery() ", ex); } sqlCmd.Parameters.Clear(); } } }
журнальная информация
12-08-2016 17: 36: 02,128 | Запрос = UPDATE SET CloudBackupSchedule BackupScheduleType = @ BackupScheduleType, ScheduleSpecificDate = @ ScheduleSpecificDate, ScheduleSpecificTime = @ ScheduleSpecificTime, ScheduleRecurringType = @ ScheduleRecurringType, DailyOccursAtTime = @ DailyOccursAtTime, DailyOccursEvery = @ DailyOccursEvery, DailyOccursEveryType = @DailyOccursEveryType , DailyOccursEveryFrom = @ DailyOccursEveryFrom, DailyOccursEveryTo = @ DailyOccursEveryTo, WeeklyRecurringDays = @ WeeklyRecurringDays, MonthlyOccuranceType = @ MonthlyOccuranceType, MonthlyDaysOfMonth = @ MonthlyDaysOfMonth, MonthlyOccuranceDays = @ MonthlyOccuranceDays, MonthlyOccuranceRepeatMonth = @ MonthlyOccuranceRepeatMonth, MonthlyOccuranceStartFrom = @ MonthlyOccuranceStartFrom, YearlyOccuranceRepeatYear = @ YearlyOccuranceRepeatYear, YearlyOccuranceStartFrom = @YearlyOccuranceStartFrom , IsScheduleStopPlan = @ IsScheduleStopPlan, ScheduleStopPlanHourMinute = @ ScheduleStopPlanHourMinute, ScheduleStopPlanType = @ ScheduleStopPlanType, IsScheduleMisse dPlan = @ IsScheduleMissedPlan, CreatedDate = @ CreatedDate, UpdatedDate = @ UpdatedDate, PlanId = @PlanId, BackupScheduleId = @BackupScheduleId ГДЕ Planid = @planid И BackupScheduleId = @BackupScheduleId
12-08-2016 17:36:02.130|0. Параметр=@BackupScheduleType, Значение=0
12-08-2016 17:36:02.132|1. Параметр=@ScheduleSpecificDate, Значение=
12-08-2016 17:36:02.133|2. Параметр=@ScheduleSpecificTime, Значение=
12-08-2016 17:36:02.135|3. Параметр=@ScheduleRecurringType, Значение=0
12-08-2016 17:36:02.136|4. Параметр=@DailyOccursAtTime, Значение=
12-08-2016 17:36:02.138|5. Параметр=@DailyOccursEvery, Значение=0
12-08-2016 17:36:02.139|6. Параметр=@DailyOccursEveryType, Значение=
12-08-2016 17:36:02.141|7. Параметр=@DailyOccursEveryFrom, Значение=
12-08-2016 17:36:02.142|8. Параметр=@DailyOccursEveryTo, Значение=
12-08-2016 17:36:02.144|9. Параметр=@WeeklyRecurringDays, Значение=
12-08-2016 17:36:02.145|10. Параметр=@MonthlyOccuranceType, Значение=0
12-08-2016 17:36:02.146|11. Параметр=@MonthlyDaysOfMonth, Значение=0
12-08-2016 17:36:02.148|12. Параметр=@MonthlyOccuranceDays, Значение=
12-08-2016 17:36:02.149|13. Параметр=@MonthlyOccuranceRepeatMonth, Значение=0
12-08-2016 17:36:02.151|14. Параметр=@MonthlyOccuranceStartFrom, Значение=
12-08-2016 17:36:02.152|15. Параметр=@YearlyOccuranceRepeatYear, Значение=0
12-08-2016 17:36:02.153|16. Параметр=@YearlyOccuranceStartFrom, Значение=
12-08-2016 17:36:02.154|17. Параметр=@IsScheduleStopPlan, Значение=0
12-08-2016 17:36:02.156|18. Параметр=@ScheduleStopPlanHourMinute, Значение=0
12-08-2016 17:36:02.157|19. Параметр=@ScheduleStopPlanType, Значение=
12-08-2016 17:36:02.158|20. Параметр=@IsScheduleMissedPlan, Значение=0
12-08-2016 17:36:02.160|21. Параметр=@CreatedDate, Значение=05-08-2016 17: 01:28
12-08-2016 17:36:02.161|22. Параметр=@UpdatedDate, Значение=
12-08-2016 17:36:02.162|23. Параметр=@PlanId, Значение=1
12-08-2016 17:36:02.163|24. Параметр=@BackupScheduleId, Значение=1
Что я уже пробовал:
iam сопоставил все параметры в запросе, но все равно получил ошибку
F-ES Sitecore
Используйте отладчик для проверки выполняемого SQL-кода, а также коллекции параметров. Вероятно, где-то возникнет несоответствие, и поскольку мы не можем запустить ваш код, поскольку у нас нет доступа к вашим данным, его трудно отлаживать удаленно.
srilekhamenon
имеет ли значение последовательность параметров ?