从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错误,显示内容
这就是所谓的级联式下拉菜单——最典型的例子是"选择你的国家,然后选择你的省份"
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替换为您的表的实际名称,如果这真的是它应该工作的方式。