2012-04-07 8 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(); 
      } 
関連する問題