【问题标题】:The parameterized query expects parameter xy which was not supplied参数化查询需要未提供的参数 xy
【发布时间】:2019-05-03 18:52:50
【问题描述】:

我正在尝试在不添加有关汽车交付的一些详细信息的情况下制作应用程序。 我用 C# 和 SQL 编写了代码,但是当我将数据添加到 textboxradiobuttonlabels 等时,我得到了这个错误:

System.Data.SqlClient.SqlException: '参数化查询'(@a int,@b nvarchar(7),@c int,@d nvarchar(12),@envarchar(10),@f' 期望未提供参数'@f'。'

但我尝试通过调试查看它们是否采用值并且所有值都小于@f 数据库中列的长度为50或100

if (materialRadioButton5.Checked) 
{
    choose = "Excelent"; 
}
else if (materialRadioButton8.Checked) 
{
    choose = "Foarte bună"; 
}
else if (materialRadioButton7.Checked) 
{
    choose = "Bună"; 
}
else if (materialRadioButton6.Checked) 
{  
    choose = "Uzată"; 
}


if (materialRadioButton4.Checked)  
{
     chooser = "Mulţumit"; 
}
else if (materialRadioButton1.Checked)
{
     chooser = "Nemulţumit"; 
}

SqlConnection con = new SqlConnection(stringcon);
SqlCommand cmd = new SqlCommand();

con.Open();
cmd.Connection = con;

cmd.Parameters.Clear();
cmd.CommandText = "insert into returncar(id_client,fullname_client,id_team,fullname_team,rendition,condition,team_mention,customers_plesed,exp_felt,client_mention) values(@a,@b,@c,@d,@e,@f,@g,@h,@i,@j)";

cmd.Parameters.AddWithValue("@a", Convert.ToInt32(label65.Text));
cmd.Parameters.AddWithValue("@b", label67.Text);
cmd.Parameters.AddWithValue("@c", Convert.ToInt32(label66.Text));
cmd.Parameters.AddWithValue("@d", label68.Text);
cmd.Parameters.AddWithValue("@e", metroDateTime1.Text);          
cmd.Parameters.AddWithValue("@f", choose);
cmd.Parameters.AddWithValue("@g", firstname_textbox.Text);
cmd.Parameters.AddWithValue("@h", chooser);
cmd.Parameters.AddWithValue("@i", role_dropbox.selectedValue);
cmd.Parameters.AddWithValue("@j", materialSingleLineTextField1.Text);

cmd.ExecuteNonQuery();

SqlCommand cmd2 = new SqlCommand();
cmd2.Connection = con;

cmd2.Parameters.Clear();
cmd2.CommandText = "update rentcar set inchiriat=0 where id=@id";
cmd2.Parameters.AddWithValue("@id", Form2.idddloan);

cmd2.ExecuteNonQuery();

con.Close();

panel2.Visible = false;
bunifuFlatButton7.Visible = false;

radiobutton4radiobutton1 如何工作而其他人不工作?...

 public string choose, chooser;

【问题讨论】:

  • 调试您的代码以验证您是否拥有所有这些参数的值。
  • 您将choose 传递为@f,而不是chooser。如果 materialRadioButton1 和 4 没有被勾选,choose 可能为空
  • 我调试了我的代码,而@f 不接受值。@EdPlunkett 因为我必须选择字符串一个选择器..
  • 选择用于 5/8/7/6 按钮,选择器用于 4/1 按钮..
  • 这将是非常残酷的调试......如果你正确命名你的变量,它可能会更容易。

标签: c# sql visual-studio


【解决方案1】:

如果值为 null,则不添加参数,您将得到您提到的异常。在这些情况下,请确保检查 null 并改为传递

choose ?? Value.DBNull

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 2016-04-16
    • 1970-01-01
    相关资源
    最近更新 更多