.net 没有为一个或多个必需参数提供值。C#MS Access

.net 没有为一个或多个必需参数提供值。C#MS Access,.net,.net,我有一个Winform应用程序,在Access数据库中存储大约19个文本框数据。。 据我所知,在执行非查询命令之前,我正在输入所有可能的数据 这是我的命令文本 subcom.CommandText = @"Insert Into GOA_DB (Srno, Branch_Code, Branch_Name, Node, Region, Date_Comm, Address, MPLS, Leased_Line, LL_IP, Router_WAN_IP, Router_LAN_

我有一个Winform应用程序,在Access数据库中存储大约19个文本框数据。。 据我所知,在执行非查询命令之前,我正在输入所有可能的数据

这是我的命令文本

subcom.CommandText = @"Insert Into GOA_DB (Srno, Branch_Code, Branch_Name, Node, 
       Region, Date_Comm, Address, MPLS, Leased_Line, LL_IP,  Router_WAN_IP, Router_LAN_IP, 
       Distance_from_RCC, OATM_Parent_details, Curcuit_ID, Circuit_Type, G703_used, G703_srno,
       V35_used, V35_srno, Bandwidth, Router_Make_Model, Router_srno, Router_vendor, 
       Backup_link, BckUP_Vendor, BcKup_WAN_IP ) Values (@Srno, @Branch_Code, @Branch_Name, 
       @Node, @Region, @Date_Comm, @Address, @MPLS, @Leased_Line, @LL_IP, @Router_WAN_IP, 
       @Router_LAN_IP, @Distance_from_RCC,  @OATM_Parent_details, @Curcuit_ID, 
       @Circuit_Type,  @G703_used, @G703_srno, @V35_used, @V35_srno, @Bandwidth, 
       @Router_Make_Model, @Router_srno, @Router_vendor, @Backup_link, @BckUP_Vendor, 
       @BcKup_WAN_IP )";
这是我的参数

subcom.Parameters.AddWithValue(@"Srno", label26.Text);
        subcom.Parameters.AddWithValue(@"Branch_Code", textBox1.Text);
        subcom.Parameters.AddWithValue(@"Branch_Name", textBox2.Text);
        subcom.Parameters.AddWithValue(@"Node", textBox3.Text);
        subcom.Parameters.AddWithValue(@"Region", textBox4.Text);
        subcom.Parameters.AddWithValue(@"Date_Comm", dateTimePicker1.Text);
        subcom.Parameters.AddWithValue(@"Address", textBox5.Text);


        if (radioButton1.Checked)
        {
            string yes = "Yes";
            subcom.Parameters.AddWithValue(@"MPLS", @yes);
            subcom.Parameters.AddWithValue(@"Leased_Line", textBox15.Text);
            subcom.Parameters.AddWithValue(@"LL_IP", textBox15.Text);
        }

        if (radioButton2.Checked)
        {
            string Y = "Yes";
            string na1 = "Not Applicable";
            subcom.Parameters.AddWithValue(@"Leased_Line", @Y);
            subcom.Parameters.AddWithValue(@"MPLS", @na1);
            subcom.Parameters.AddWithValue(@"LL_IP", textBox15.Text);
        }


        subcom.Parameters.AddWithValue(@"Router_WAN_IP", textBox8.Text);
        subcom.Parameters.AddWithValue(@"Router_LAN_IP", textBox9.Text);
        subcom.Parameters.AddWithValue(@"Distance_from_RCC", textBox6.Text);
        subcom.Parameters.AddWithValue(@"OATM_Parent_details", textBox7.Text);
        subcom.Parameters.AddWithValue(@"Curcuit_ID", textBox10.Text);

        if (radioButton3.Checked)
        {

            string ml = "MLLN";
            string No = "No";
            subcom.Parameters.AddWithValue(@"Circuit_Type", radioButton3.Text);
            subcom.Parameters.AddWithValue(@"G703_used", No);
            subcom.Parameters.AddWithValue(@"V35_used", No);
            subcom.Parameters.AddWithValue(@"V35_used", @No);
            subcom.Parameters.AddWithValue(@"V35_srno", textBox17.Text);
        }
        //to enter non-mlln details
        if (radioButton4.Checked)
        {
            string yes3 = "Yes";
            //string non = "Non-MLLN";
            subcom.Parameters.AddWithValue(@"Circuit_Type", radioButton4.Text);
            subcom.Parameters.AddWithValue(@"G703_used", yes3);
            subcom.Parameters.AddWithValue(@"G703_srno", textBox16.Text);
            subcom.Parameters.AddWithValue(@"V35_used", yes3);
            subcom.Parameters.AddWithValue(@"V35_srno", textBox17.Text);

        }

        subcom.Parameters.AddWithValue(@"Bandwidth", comboBox1.Text);
        subcom.Parameters.AddWithValue(@"Router_Make_Model", textBox13.Text);
        subcom.Parameters.AddWithValue(@"Router_srno", textBox14.Text);
        subcom.Parameters.AddWithValue(@"Router_vendor", textBox12.Text);

        if (radioButton5.Checked)
        {

            subcom.Parameters.AddWithValue(@"Backup_link", radioButton5.Text);
            subcom.Parameters.AddWithValue(@"BckUp_vendor", textBox18.Text);
            subcom.Parameters.AddWithValue(@"Bck_WAN_IP", textBox19.Text);

        }
        if (radioButton6.Checked)
        {


            subcom.Parameters.AddWithValue(@"Backup_link", radioButton6.Text);
            subcom.Parameters.AddWithValue(@"BckUp_vendor", textBox18.Text);
            subcom.Parameters.AddWithValue(@"Bck_WAN_IP", textBox19.Text);
        }


if (null2(this))
          {
             // MessageBox.Show("Some empty values are present");
              try
              {
                  int resul = subcom.ExecuteNonQuery();
                  if (resul > 0)
                  {
                      MessageBox.Show("Entered Successfully");
                  }
              }
              catch (Exception ex)
              {
                  MessageBox.Show(ex.Message);
              }

         }
这里抛出的异常没有为一个或多个必需参数提供值。。。执行停止。。。
有什么线索吗?

除了代码中的错误外,您不能在查询语句中添加参数后对其进行条件设置。 也就是说,INSERT语句中的所有参数都必须在命令参数中

subcom.Parameters.AddWithValue(@"Srno", label26.Text);
        subcom.Parameters.AddWithValue(@"Branch_Code", textBox1.Text);
        subcom.Parameters.AddWithValue(@"Branch_Name", textBox2.Text);
        subcom.Parameters.AddWithValue(@"Node", textBox3.Text);
        subcom.Parameters.AddWithValue(@"Region", textBox4.Text);
        subcom.Parameters.AddWithValue(@"Date_Comm", dateTimePicker1.Text);
        subcom.Parameters.AddWithValue(@"Address", textBox5.Text);


        if (radioButton1.Checked)
        {
            string yes = "Yes";
            subcom.Parameters.AddWithValue(@"MPLS", @yes);
            subcom.Parameters.AddWithValue(@"Leased_Line", textBox15.Text);
            subcom.Parameters.AddWithValue(@"LL_IP", textBox15.Text);
        }

        if (radioButton2.Checked)
        {
            string Y = "Yes";
            string na1 = "Not Applicable";
            subcom.Parameters.AddWithValue(@"Leased_Line", @Y);
            subcom.Parameters.AddWithValue(@"MPLS", @na1);
            subcom.Parameters.AddWithValue(@"LL_IP", textBox15.Text);
        }


        subcom.Parameters.AddWithValue(@"Router_WAN_IP", textBox8.Text);
        subcom.Parameters.AddWithValue(@"Router_LAN_IP", textBox9.Text);
        subcom.Parameters.AddWithValue(@"Distance_from_RCC", textBox6.Text);
        subcom.Parameters.AddWithValue(@"OATM_Parent_details", textBox7.Text);
        subcom.Parameters.AddWithValue(@"Curcuit_ID", textBox10.Text);

        if (radioButton3.Checked)
        {

            string ml = "MLLN";
            string No = "No";
            subcom.Parameters.AddWithValue(@"Circuit_Type", radioButton3.Text);
            subcom.Parameters.AddWithValue(@"G703_used", No);
            subcom.Parameters.AddWithValue(@"V35_used", No);
            subcom.Parameters.AddWithValue(@"V35_used", @No);
            subcom.Parameters.AddWithValue(@"V35_srno", textBox17.Text);
        }
        //to enter non-mlln details
        if (radioButton4.Checked)
        {
            string yes3 = "Yes";
            //string non = "Non-MLLN";
            subcom.Parameters.AddWithValue(@"Circuit_Type", radioButton4.Text);
            subcom.Parameters.AddWithValue(@"G703_used", yes3);
            subcom.Parameters.AddWithValue(@"G703_srno", textBox16.Text);
            subcom.Parameters.AddWithValue(@"V35_used", yes3);
            subcom.Parameters.AddWithValue(@"V35_srno", textBox17.Text);

        }

        subcom.Parameters.AddWithValue(@"Bandwidth", comboBox1.Text);
        subcom.Parameters.AddWithValue(@"Router_Make_Model", textBox13.Text);
        subcom.Parameters.AddWithValue(@"Router_srno", textBox14.Text);
        subcom.Parameters.AddWithValue(@"Router_vendor", textBox12.Text);

        if (radioButton5.Checked)
        {

            subcom.Parameters.AddWithValue(@"Backup_link", radioButton5.Text);
            subcom.Parameters.AddWithValue(@"BckUp_vendor", textBox18.Text);
            subcom.Parameters.AddWithValue(@"Bck_WAN_IP", textBox19.Text);

        }
        if (radioButton6.Checked)
        {


            subcom.Parameters.AddWithValue(@"Backup_link", radioButton6.Text);
            subcom.Parameters.AddWithValue(@"BckUp_vendor", textBox18.Text);
            subcom.Parameters.AddWithValue(@"Bck_WAN_IP", textBox19.Text);
        }


if (null2(this))
          {
             // MessageBox.Show("Some empty values are present");
              try
              {
                  int resul = subcom.ExecuteNonQuery();
                  if (resul > 0)
                  {
                      MessageBox.Show("Entered Successfully");
                  }
              }
              catch (Exception ex)
              {
                  MessageBox.Show(ex.Message);
              }

         }
在OleDbCommand中,更大的问题是,参数是通过它们的位置索引标识的,而不是通过它们的名称标识的

试着这样做:

subcom.CommandText = "Insert Into GOA_DB (Srno, Branch_Code, Branch_Name, Node, Region, Date_Comm, Address, MPLS, Leased_Line, LL_IP,  Router_WAN_IP, Router_LAN_IP, Distance_from_RCC, OATM_Parent_details, Curcuit_ID, Circuit_Type, G703_used, G703_srno, V35_used, V35_srno, Bandwidth, Router_Make_Model, Router_srno, Router_vendor, Backup_link, BckUP_Vendor, BcKup_WAN_IP ) Values" +
                                         "(@Srno, @Branch_Code, @Branch_Name, @Node, @Region, @Date_Comm, @Address, @MPLS, @Leased_Line, @LL_IP, @Router_WAN_IP, @Router_LAN_IP, @Distance_from_RCC,  @OATM_Parent_details, @Curcuit_ID, @Circuit_Type,  @G703_used, @G703_srno, @V35_used, @V35_srno, @Bandwidth, @Router_Make_Model, @Router_srno, @Router_vendor, @Backup_link, @BckUP_Vendor, @BcKup_WAN_IP )";

var strParams = "@Srno,@Branch_Code,@Branch_Name,@Node,@Region,@Date_Comm,@Address,@MPLS,@Leased_Line,@LL_IP,@Router_WAN_IP,@Router_LAN_IP,@Distance_from_RCC,@OATM_Parent_details,@Curcuit_ID,@Circuit_Type,@G703_used,@G703_srno,@V35_used,@V35_srno,@Bandwidth,@Router_Make_Model,@Router_srno,@Router_vendor,@Backup_link,@BckUP_Vendor,@BcKup_WAN_IP";

subcom.Parameters.AddRange(strParams.Split(',').Select(x => new SqlParameter(x, SqlDbType.NVarChar)).ToArray());

string yes = "Yes";
string No = "No";
string na1 = "Not Applicable";

subcom.Parameters["@Srno"].Value =  label26.Text;
subcom.Parameters["@Branch_Code"].Value =  textBox1.Text;
subcom.Parameters["@Branch_Name"].Value =  textBox2.Text;
subcom.Parameters["@Node"].Value =  textBox3.Text;
subcom.Parameters["@Region"].Value =  textBox4.Text;
subcom.Parameters["@Date_Comm"].Value =  dateTimePicker1.Text;
subcom.Parameters["@Address"].Value =  textBox5.Text;

subcom.Parameters["@Router_WAN_IP"].Value =  textBox8.Text;
subcom.Parameters["@Router_LAN_IP"].Value =  textBox9.Text;
subcom.Parameters["@Distance_from_RCC"].Value =  textBox6.Text;
subcom.Parameters["@OATM_Parent_details"].Value =  textBox7.Text;
subcom.Parameters["@Curcuit_ID"].Value =  textBox10.Text;


subcom.Parameters["@Bandwidth"].Value =  comboBox1.Text;
subcom.Parameters["@Router_Make_Model"].Value =  textBox13.Text;
subcom.Parameters["@Router_srno"].Value =  textBox14.Text;
subcom.Parameters["@Router_vendor"].Value =  textBox12.Text;


if (radioButton1.Checked)
{
    subcom.Parameters["@MPLS"].Value = yes;
    subcom.Parameters["@Leased_Line"].Value =  textBox15.Text;
    subcom.Parameters["@LL_IP"].Value =  textBox15.Text;
}
if (radioButton2.Checked)
{
    subcom.Parameters["@Leased_Line"].Value =  yes;
    subcom.Parameters["@MPLS"].Value =  na1;
    subcom.Parameters["@LL_IP"].Value =  textBox15.Text;
}
if (radioButton3.Checked)
{
    string ml = "MLLN";
    subcom.Parameters["@Circuit_Type"].Value =  radioButton3.Text;
    subcom.Parameters["@G703_used"].Value =  No;
    subcom.Parameters["@V35_used"].Value =  No;
    subcom.Parameters["@V35_used"].Value =  No;
    subcom.Parameters["@V35_srno"].Value =  textBox17.Text;
}
//to enter non-mlln details
if (radioButton4.Checked)
{
    //string non = "Non-MLLN";
    subcom.Parameters["@Circuit_Type"].Value =  radioButton4.Text;
    subcom.Parameters["@G703_used"].Value =  yes;
    subcom.Parameters["@G703_srno"].Value =  textBox16.Text;
    subcom.Parameters["@V35_used"].Value =  yes;
    subcom.Parameters["@V35_srno"].Value =  textBox17.Text;
}
if (radioButton5.Checked)
{
    subcom.Parameters["@Backup_link"].Value =  radioButton5.Text;
    subcom.Parameters["@BckUp_vendor"].Value =  textBox18.Text;
    subcom.Parameters["@Bck_WAN_IP"].Value =  textBox19.Text;
}
if (radioButton6.Checked)
{
    subcom.Parameters["@Backup_link"].Value =  radioButton6.Text;
    subcom.Parameters["@BckUp_vendor"].Value =  textBox18.Text;
    subcom.Parameters["@Bck_WAN_IP"].Value =  textBox19.Text;
}

问题出在
subcom.Parameters.AddWithValue(@“MPLS”和@yes)等行上不使用前导的
@
将值传递到参数中。我很惊讶它居然会运行。正确的方法是什么?删除
@
subcom.Parameters.AddWithValue(@“MPLS”,yes)从那开始。