.net 没有为一个或多个必需参数提供值。C#MS Access
我有一个Winform应用程序,在Access数据库中存储大约19个文本框数据。。 据我所知,在执行非查询命令之前,我正在输入所有可能的数据 这是我的命令文本.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_
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)代码>从那开始。