代码之家  ›  专栏  ›  技术社区  ›  nikotromus

批量查询异常

  •  1
  • nikotromus  · 技术社区  · 6 年前

    变量名'@scoreboardId'已经声明。变量名在查询批处理或存储过程中必须是唯一的

    有办法解决这个批处理异常吗?

    public void insertActiveMonitorsForScoreboard(SqlConnection dbConn, SqlTransaction dbTrans, int scoreboardId,
                                                  ObservableCollection<AvailableMonitorBo> availableMonitorsForAddOC) 
    {         
        using (SqlCommand dbCommand = new SqlCommand(CreateAndDisplaySQLStrings.INSERT_SCOREBOARD_MONITORS, dbConn)) 
        {
            dbCommand.Transaction = dbTrans;
    
            foreach (AvailableMonitorBo bo in availableMonitorsForAddOC) 
            {
                if (bo.IsActive) 
                {
                    dbCommand.Parameters.Add("scoreboardId", SqlDbType.Int).Value = scoreboardId;
                    dbCommand.Parameters.Add("availableMonitorId", SqlDbType.Int).Value = bo.AvailableMonitorId;
    
                    dbCommand.ExecuteNonQuery();
                }                   
            }               
        }
    }
    
    2 回复  |  直到 6 年前
        1
  •  5
  •   sticky bit    6 年前

    尝试只添加一次参数,然后只更改其值。

    public void insertActiveMonitorsForScoreboard(SqlConnection dbConn, SqlTransaction dbTrans, int scoreboardId,
     ObservableCollection<AvailableMonitorBo> availableMonitorsForAddOC) {         
         using (SqlCommand dbCommand = new SqlCommand(CreateAndDisplaySQLStrings.INSERT_SCOREBOARD_MONITORS, dbConn)) {
               dbCommand.Transaction = dbTrans;
               dbCommand.Parameters.Add("scoreboardId", SqlDbType.Int);
               dbCommand.Parameters.Add("availableMonitorId", SqlDbType.Int);
               foreach (AvailableMonitorBo bo in availableMonitorsForAddOC) {
                   if (bo.IsActive) {
                       dbCommand.Parameters["scoreboardId"].Value = scoreboardId;
                       dbCommand.Parameters["availableMonitorId"].Value = bo.AvailableMonitorId;
                       dbCommand.ExecuteNonQuery();
                  }                   
            }               
        }
    }
    
        2
  •  1
  •   Polyfun MicBehrens    6 年前

    public void insertActiveMonitorsForScoreboard(SqlConnection dbConn, SqlTransaction dbTrans, int scoreboardId,
     ObservableCollection<AvailableMonitorBo> availableMonitorsForAddOC) {         
       foreach (AvailableMonitorBo bo in availableMonitorsForAddOC) {
           if (bo.IsActive) {
               using (SqlCommand dbCommand = new SqlCommand(CreateAndDisplaySQLStrings.INSERT_SCOREBOARD_MONITORS, dbConn)) {
                   dbCommand.Transaction = dbTrans;
                   dbCommand.Parameters.Add("scoreboardId", SqlDbType.Int).Value = scoreboardId;
                   dbCommand.Parameters.Add("availableMonitorId", SqlDbType.Int).Value = bo.AvailableMonitorId;
                   dbCommand.ExecuteNonQuery();
              }                   
           }               
        }
    }