更改下拉列表时,没有为一个或多个必需的参数给定值

本文关键字:参数 一个 下拉列表 | 更新日期: 2023-09-27 17:49:39

共两个下拉菜单

从数据库中获取值,如:

下拉列表1(Products)

  • 巧克力
  • <
  • 降温饮料/gh>

如果从第一个下拉列表中我选择了Ice cream,它将显示

下拉2(品种)

  • 香草
  • 草莓
  • 芒果

如果从第一个下拉列表中我选择了巧克力,它将显示

下拉2(品种)

    黑巧克力
  • 牛奶巧克力
  • 焦糖巧克力

其他项应清除并仅显示上述


使用<

代码/h2>
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    string txtval = DropDownList1.SelectedValue;
    string txtval1 = DropDownList1.SelectedItem.Text;
    string str = "Provider=Microsoft.ACE.OleDB.12.0; Data Source=C:''Users''user''Desktop'123''WebSite1''Checking_Db.mdb";
    OleDbConnection db = new OleDbConnection(str);
    db.Open();                                    
    //  string st = "select Emp_Ph_No from emp where Emp_Name =  DropDownList1.SelectedValue ;";
    string st = "select Emp_Ph_No from emp where Emp_Name = txtval1;";
    OleDbCommand dbc = new OleDbCommand(st, db);
    OleDbDataReader read = dbc.ExecuteReader();
    DropDownList2.DataSource = read;
    DropDownList2.DataTextField = "variety";       
    DropDownList2.DataValueField = ""variety";       
    DropDownList2.DataBind();
    read.Close();
    db.Close();
}

更改下拉列表时,没有为一个或多个必需的参数给定值

那行有问题;

...where Emp_Name = txtval1;

如果txtval1string,则将其用作Emp_Name = 'txtval1'。这不是一个有效的语法。在这种情况下,OLEDB提供程序认为此txtval1是一个参数,并且您没有为其提供任何值。

您可以将此值设置为参数并添加到命令中,如;

string st = "select Emp_Ph_No from emp where Emp_Name = ?";
OleDbCommand dbc = new OleDbCommand(st, db);
dbc.Parameters.AddWithValue("?", txtval1);

我使用AddWithValue在我的例子,但你不。此方法有时可能会产生意想不到的结果。使用.Add()重载来指定你的参数OleDbType和它的大小。

还可以使用using语句来自动处置连接、命令和阅读器,而不是手动调用.Close.Dispose方法。

using(var db = new OleDbConnection(str))
using(var dbc = db.CreateCommand)
{
    // Set your CommandText.
    // Add your parameter value.
    using(var read = dbc.ExecuteReader())
    {
       //
    }
}