0

从 datatable 插入数据时出现以下错误。显示的错误是已声明变量名称“@ndate1”。变量名称在查询批处理或存储过程中必须是唯一的。我是 .net 的新手。我该如何解决这个错误请帮我解决这个错误..

我的部分代码在这里..

            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();
            }

第一行仅插入数据库...

4

2 回答 2

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();
            }
于 2012-04-07T08:42:22.800 回答
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();
        }

希望这会帮助你..快乐的编码..

于 2012-04-07T08:05:59.323 回答