2012-04-07 71 views
0

我從數據表中插入數據時出現以下錯誤。顯示的錯誤是變量名'@ ndate1'已被聲明。變量名稱在查詢批處理或存儲過程中必須是唯一的。對.net來說是新的。我怎樣才能解決這個錯誤,請幫我解決這個錯誤..從gridview通過for循環插入數據

我parital代碼是在這裏..

  for (int i = 0; i <= DT.Rows.Count; i++) 
      { 
       //sqlcmd.Parameters.Add("@company", SqlDbType.NVarChar).Value = Convert.ToString(dr["company"]); 
       sqlcmd.CommandText = @" Insert into tbl_rtdata (fld_date,fld_dtcode,fld_company,fld_primary,fld_sales,fld_balance) 
       values (@ndate1,@dtcode1,@company1,@billing1,@sales1,@balance1)"; 
       sqlcmd.Parameters.AddWithValue("@ndate1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["ndate"]); 
       sqlcmd.Parameters.AddWithValue("@dtcode1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["dtcode"]); 
       sqlcmd.Parameters.AddWithValue("@company1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["company"]); 
       sqlcmd.Parameters.AddWithValue("@billing1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["billing"]); 
       sqlcmd.Parameters.AddWithValue("@sales1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["sales"]); 
       sqlcmd.Parameters.AddWithValue("@balance1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["balance"]); 


       sqlcmd.ExecuteNonQuery(); 
      } 

第一行只插入到數據庫...

回答

0

修改您的代碼下面。

for (int i = 0; i <= DT.Rows.Count; i++) 
     { 

      sqlcmd = new SqlCommand(); 
      sqlcmd.Connection = objconn; 

      //sqlcmd.Parameters.Add("@company", SqlDbType.NVarChar).Value = Convert.ToString(dr["company"]); 
      sqlcmd.CommandText = @" Insert into tbl_rtdata (fld_date,fld_dtcode,fld_company,fld_primary,fld_sales,fld_balance) 
      values (@ndate1,@dtcode1,@company1,@billing1,@sales1,@balance1)"; 
      sqlcmd.Parameters.AddWithValue("@ndate1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["ndate"]); 
      sqlcmd.Parameters.AddWithValue("@dtcode1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["dtcode"]); 
      sqlcmd.Parameters.AddWithValue("@company1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["company"]); 
      sqlcmd.Parameters.AddWithValue("@billing1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["billing"]); 
      sqlcmd.Parameters.AddWithValue("@sales1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["sales"]); 
      sqlcmd.Parameters.AddWithValue("@balance1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["balance"]); 


      sqlcmd.ExecuteNonQuery(); 
     } 

希望這將幫助你....編碼快樂..

0

你只需要添加sqlcmd.Parameters.Clear否則將維持從第一循環的參數集合。

for (int i = 0; i <= DT.Rows.Count; i++) 
      { 
       sqlcmd.Parameters.Clear(); 
       sqlcmd.CommandText = @" Insert into tbl_rtdata (fld_date,fld_dtcode,fld_company,fld_primary,fld_sales,fld_balance) 
       values (@ndate1,@dtcode1,@company1,@billing1,@sales1,@balance1)"; 
       sqlcmd.Parameters.AddWithValue("@ndate1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["ndate"]); 
       sqlcmd.Parameters.AddWithValue("@dtcode1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["dtcode"]); 
       sqlcmd.Parameters.AddWithValue("@company1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["company"]); 
       sqlcmd.Parameters.AddWithValue("@billing1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["billing"]); 
       sqlcmd.Parameters.AddWithValue("@sales1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["sales"]); 
       sqlcmd.Parameters.AddWithValue("@balance1", SqlDbType.NVarChar).Value = Convert.ToString(DT.Rows[i]["balance"]); 


       sqlcmd.ExecuteNonQuery(); 
      }