菜鸟刚学.NET,想把一个表单递交,并把数据添加到记录里,总是报错。
请教高手指点啊源代码如下:using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;public partial class order_Default : System.Web.UI.Page
{ public   SqlConnection conn = SQLHelper.CreateConnection();
  public string  sqlstr;    protected void Page_Load(object sender, EventArgs e)
{
        conn.Open();
        string sql;
        if (!IsPostBack)
        {          //以下代码通过提取数据库里的一些表记录生成表单里一些控件的数据
           略.....
        }        conn.Close();
    }
 protected void Button1_Click(object sender, EventArgs e) //按下按钮,递交表单并添加记录    {   
        
            sqlstr = "insert into ddorder (po,Scustomerid,supplierid,o_rdate,o_dType,o_lport,o_dport,o_Warehouseid,o_Consignee,o_deliver,beizhu,o_AlertDate) values (@po,@Scustomerid,@supplierid,@o_rdate,@o_dType,@o_lport,@o_dport,@o_Warehouseid,@o_Consignee,@o_deliver,@beizhu,@o_AlertDate)";            conn.Open();
           
            SqlCommand cmdd = new SqlCommand();
            cmdd.Connection = conn;
            cmdd.CommandText = sqlstr;            cmdd.Parameters.Add(new SqlParameter("@po", SqlDbType.NVarChar, 50));
            cmdd.Parameters["@po"].Value = po.Text;            
            cmdd.Parameters.Add(new SqlParameter("@Scustomerid", SqlDbType.Int, 4));
            cmdd.Parameters["@Scustomerid"].Value = Convert.ToInt16(Scustomerid.SelectedItem.Value);
            cmdd.Parameters.Add(new SqlParameter("@supplierid", SqlDbType.Int, 4));
            cmdd.Parameters["@supplierid"].Value = Convert.ToInt16(DropDownList1.SelectedItem.Value);            cmdd.Parameters.Add(new SqlParameter("@o_rdate", SqlDbType.NVarChar, 50));
            cmdd.Parameters["@o_rdate"].Value = o_rdate.Text;            cmdd.Parameters.Add(new SqlParameter("@o_dType", SqlDbType.Int, 4));
            cmdd.Parameters["@o_dType"].Value = Convert.ToInt16(dType.SelectedItem.Value);            cmdd.Parameters.Add(new SqlParameter("@o_lport", SqlDbType.Int, 4));
            cmdd.Parameters["@o_lport"].Value = Convert.ToInt16(lport.SelectedItem.Value.ToString());            cmdd.Parameters.Add(new SqlParameter("@o_dport", SqlDbType.NVarChar, 50));
            cmdd.Parameters["@o_dport"].Value = Convert.ToInt16(dport.SelectedItem.Value);            cmdd.Parameters.Add(new SqlParameter("@o_Warehouseid", SqlDbType.Int, 4));
            cmdd.Parameters["@o_Warehouseid"].Value = Convert.ToInt16(Warehouseid.SelectedItem.Value);            cmdd.Parameters.Add(new SqlParameter("@supplierid", SqlDbType.Int, 4));
            cmdd.Parameters["@supplierid"].Value = Convert.ToInt16(DropDownList1.SelectedItem.Value);           cmdd.Parameters.Add(new SqlParameter("@o_Forwarderid", SqlDbType.Int, 4));
            cmdd.Parameters["@o_Forwarderid"].Value = Convert.ToInt16(Forwarderid.SelectedItem.Value);            cmdd.Parameters.Add(new SqlParameter("@o_Consignee", SqlDbType.Int, 4));
            cmdd.Parameters["@o_Consignee"].Value = Convert.ToInt16(Consignee.SelectedItem.Value);            cmdd.Parameters.Add(new SqlParameter("@o_deliver", SqlDbType.Int, 4));
            cmdd.Parameters["@o_deliver"].Value = Convert.ToInt16(deliver.SelectedItem.Value);            cmdd.Parameters.Add(new SqlParameter("@beizhu", SqlDbType.NText, 50));
            cmdd.Parameters["@beizhu"].Value = beizhu.Text;            cmdd.Parameters.Add(new SqlParameter("@o_AlertDate", SqlDbType.DateTime, 8));
            cmdd.Parameters["@o_AlertDate"].Value = Convert.ToDateTime(AlertDate.Text);
             
            int val = cmdd.ExecuteNonQuery();
            cmdd.Parameters.Clear();
           
            conn.Close();
 
    }
   }就是以上的代码,在按下按钮递交后,总是出现类似以下信息变量名 '@supplierid' 已声明。变量名在批查询或存储过程内部必须唯一。必须声明变量 '@o_Consignee'请教问题出在哪里呢?通过跟踪,表单内控件递交的数据都有正确的值

解决方案 »

  1.   

      cmdd.Parameters.Add(new SqlParameter("@supplierid", SqlDbType.Int, 4));
      cmdd.Parameters["@supplierid"].Value = Convert.ToInt16(DropDownList1.SelectedItem.Value);  cmdd.Parameters.Add(new SqlParameter("@o_rdate", SqlDbType.NVarChar, 50));
      cmdd.Parameters["@o_rdate"].Value = o_rdate.Text;  cmdd.Parameters.Add(new SqlParameter("@o_dType", SqlDbType.Int, 4));
      cmdd.Parameters["@o_dType"].Value = Convert.ToInt16(dType.SelectedItem.Value);  cmdd.Parameters.Add(new SqlParameter("@o_lport", SqlDbType.Int, 4));
      cmdd.Parameters["@o_lport"].Value = Convert.ToInt16(lport.SelectedItem.Value.ToString());  cmdd.Parameters.Add(new SqlParameter("@o_dport", SqlDbType.NVarChar, 50));
      cmdd.Parameters["@o_dport"].Value = Convert.ToInt16(dport.SelectedItem.Value);  cmdd.Parameters.Add(new SqlParameter("@o_Warehouseid", SqlDbType.Int, 4));
      cmdd.Parameters["@o_Warehouseid"].Value = Convert.ToInt16(Warehouseid.SelectedItem.Value);  cmdd.Parameters.Add(new SqlParameter("@supplierid", SqlDbType.Int, 4));
      cmdd.Parameters["@supplierid"].Value = Convert.ToInt16(DropDownList1.SelectedItem.Value);重复了
      

  2.   

    cmdd.Parameters.Add(new SqlParameter("@supplierid", SqlDbType.Int, 4));
      cmdd.Parameters["@supplierid"].Value = Convert.ToInt16(DropDownList1.SelectedItem.Value);
      cmdd.Parameters.Add(new SqlParameter("@o_rdate", SqlDbType.NVarChar, 50));
      cmdd.Parameters["@o_rdate"].Value = o_rdate.Text;  cmdd.Parameters.Add(new SqlParameter("@o_dType", SqlDbType.Int, 4));
      cmdd.Parameters["@o_dType"].Value = Convert.ToInt16(dType.SelectedItem.Value);  cmdd.Parameters.Add(new SqlParameter("@o_lport", SqlDbType.Int, 4));
      cmdd.Parameters["@o_lport"].Value = Convert.ToInt16(lport.SelectedItem.Value.ToString());  cmdd.Parameters.Add(new SqlParameter("@o_dport", SqlDbType.NVarChar, 50));
      cmdd.Parameters["@o_dport"].Value = Convert.ToInt16(dport.SelectedItem.Value);  cmdd.Parameters.Add(new SqlParameter("@o_Warehouseid", SqlDbType.Int, 4));
      cmdd.Parameters["@o_Warehouseid"].Value = Convert.ToInt16(Warehouseid.SelectedItem.Value);  cmdd.Parameters.Add(new SqlParameter("@supplierid", SqlDbType.Int, 4));
      cmdd.Parameters["@supplierid"].Value = Convert.ToInt16(DropDownList1.SelectedItem.Value);