从mysql填充的组合框中选择记录

本文关键字:选择 记录 组合 mysql 填充 | 更新日期: 2023-09-27 18:10:59

我有一个填充组合框的查询,并根据组合框的选择将值传递给另一个查询。

到目前为止,我的代码是:
    MySqlCommand SelectCommandAirport = new MySqlCommand("SELECT AirportName, DataTable  FROM    AirportList;", myConnAirport);
MySqlDataReader myAirportReader;
    myConnAirport.Open();
    myAirportReader = SelectCommandAirport.ExecuteReader();
    DataTable dataTable = new DataTable();
    dataTable.Columns.Add(new DataColumn("AirportName"));
    dataTable.Columns.Add(new DataColumn("DataTable"));
    comboBox1.DataSource = dataTable;
    comboBox1.ValueMember = "AirportName";
    comboBox1.DisplayMember = "DataTable";
try
    {
       while (myAirportReader.Read())
       {
          DataRow row = dataTable.NewRow();
          row["AirportName"] = myAirportReader[1];
          row["DataTable"] = myAirportReader[0];
          dataTable.Rows.Add(row);
          SelectAirport.sAirport = comboBox1.SelectedItem.ToString();
       }
     }
 catch (Exception ex)
     {
     MessageBox.Show(ex.Message);
     }

然后我有第二个查询,它应该使用comboBox选择的结果作为第二个查询的变量。

    string airportid;
    airportid = SelectAirport.sAirport;
    MySqlCommand SelectCommand = new MySqlCommand("SELECT ArriveDepart, Flight, FlightDate, ScheduledTime, IATALookup, Terminal, RemarkswithTime, Logo   FROM '" + airportid + "' WHERE Flight = '" + this.flightno_txt.Text + "';", myConnFlight);

当我运行代码时,我得到一个SQL错误,说"System.Data。DataRowView WHERE Flight =".

因为这是不工作,我可以假设代码是正确的。有谁能看出我错在哪里吗?

提前感谢。

DCJ

当我运行代码时,我得到一个SQL错误,显示内容

从mysql填充的组合框中选择记录

这就是所谓的级联式下拉菜单——最典型的例子是"选择你的国家,然后选择你的省份"

ASP。Net现在提供了一个功能,使这比以前容易得多。如果你不能使用这个功能,你所做的是非常正确的——选择一个,然后提交到下一个查询,并从它加载框。

这是来自ASP。Net AJAX库…http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx

同样,您在代码示例中有额外的工作。当您运行ExecuteReader命令时,它返回一个DataReader对象,该对象可以直接绑定到控件,如下所示…

MySqlCommand SelectCommandAirport = new MySqlCommand("SELECT AirportName, DataTable  FROM    AirportList;", myConnAirport);
MySqlDataReader myAirportReader;
myConnAirport.Open();
myAirportReader = SelectCommandAirport.ExecuteReader();
comboBox1.DataSource = dataTable;
comboBox1.ValueMember = "AirportName";
comboBox1.DisplayMember = "DataTable";
comboBox1.DataBind();

这往往比创建项并将它们复制到您的组合框中要好。

我怀疑您的SQL错误是因为您将AirportName视为表名,而不是数据值。所以,你的查询应该更像这样(我喜欢使用字符串。格式以更清楚地指示字符串内的参数位置):

String.Format("SELECT ArriveDepart, Flight, FlightDate, ScheduledTime, IATALookup,
    Terminal, RemarkswithTime, Logo  
    FROM AIRPORT_TABLE WHERE AirportName = '{0}'
         AND Flight = {1}", airportId, flightno_txt.Text)

并且您需要将AIRPORT_TABLE替换为您的表的实际名称,如果这真的是它应该工作的方式。