MySQL提供正确的输出,但Java引发异常
我想展示以下信息- 航班日期|姓名起飞时间|公务舱可用性|行政舱可用性|经济舱可用性 现在所有的信息都在不同的表格中MySQL提供正确的输出,但Java引发异常,java,mysql,sql,Java,Mysql,Sql,我想展示以下信息- 航班日期|姓名起飞时间|公务舱可用性|行政舱可用性|经济舱可用性 现在所有的信息都在不同的表格中 Table sector - sectorID | description | weekday1 | weekday2 | bfare | xfare | efare Table flights - flightno | deptime | arrtime | aircrafttypeID | sectorID Table aircraft - aircraftTypeID |
Table sector - sectorID | description | weekday1 | weekday2 | bfare | xfare | efare
Table flights - flightno | deptime | arrtime | aircrafttypeID | sectorID
Table aircraft - aircraftTypeID | description | bseats | xseats | eseats
scheduleID - flightno | flightdate | bcsavailable | xcsavailable | ecsavailable
查询:显示计划于2013年6月17日从加尔各答飞往艾哈迈达巴德的航班,航班类别为商务舱
第1部分-我正在尝试获取座位超过0且来源和目的地匹配的航班号,
第2部分-然后我将从ScheduledFlaghts表中获取日期和航班号匹配的记录。
当我在MySQL查询窗口中运行此查询时,我得到了正确的输出,但当我在Java中执行相同的查询时,它会给我一个错误-
列索引超出范围,2>1
SQL版本
SELECT flightno
FROM flights
WHERE aircrafttypeID
IN (
SELECT aircraftTypeID
FROM aircraft
WHERE aircrafttypeID
IN (
SELECT aircrafttypeID
FROM sector, flights
WHERE source LIKE 'Kolkata'
AND destination LIKE 'Ahmedabad'
AND sector.sectorID = flights.sectorID
)
AND bseats >0)
以上查询的输出为FJA23和FJA24 2记录,正确无误
Java版本
String origin=jComboBox3.getSelectedItem().toString();
String target=jComboBox4.getSelectedItem().toString();
String fclass=jComboBox1.getSelectedItem().toString();
String search = "";
if(fclass.equals("Business"))
{
search="AND bseats>0";
}
if(fclass.equals("Executive"))
{
search="AND xseats>0";
}
if(fclass.equals("Economy"))
{
search="AND eseats>0";
}
String sql="SELECT flightno FROM flights WHERE aircrafttypeID IN "
+ "(SELECT aircraft.aircrafttypeID FROM aircraft WHERE aircrafttypeID IN "
+ "(SELECT aircrafttypeID FROM sector,flights WHERE source LIKE '"+ origin
+ "' AND destination LIKE '" + target + "' AND sector.sectorID=flights.sectorID) " + search+")";
System.out.println(sql);
我从@Home得到了一个小小的提示,让我看看闪闪发光的灯光。当我看到printstack时,它显示了我的这部分代码
while(rs.next())
{
String var1=rs.getString(1);
//String var2=rs.getString(2);
//String var3=Integer.toString(rs.getInt(3));
//String var4=Integer.toString(rs.getInt(4));
//String var5=Integer.toString(rs.getInt(5));
//System.out.println(var1+" " + var2+" "+var3+" "+var4+" "+var5);
System.out.println(var1);
}
正在引发异常,因为我试图从多个resultset中不可用的1中获取数据
谢谢大家调查我的问题。
但我仍然很困惑如何从不同的表中获取数据。我是否需要从每个列数据中进行多个查询。因为您只选择了一列,而
您的异常表明您引用的是列索引>1..可能您正在执行此resultSet.getXXX2。很好,您已经找出了代码中的错误。就从多个表获取数据而言,我在java代码中使用以下类型的SQL 选择a.col1、b.col2、c.col3 表1为a,表2为b,表3为c 其中a.col1='abc'和b.col2介于1和100之间 希望能有帮助
所有最好的干杯 1请显示错误的堆栈跟踪。2我们不知道查询是否相同,请显示System.out.printlnsql的结果。异常是什么,它来自哪里?SQL只返回一列。如果只有一列,则不能引用第二列。如何调用数据库,以及如何处理结果集?也显示该代码。@home SELECT flightno FROM flights WHERE aircrafttypeID IN SELECT aircraft.aircrafttypeID FROM aircrafttypeID IN SELECT aircrafttypeID FROM sector中的aircraft,aircrafttypeID FROM aircrafttypeID FROM sector中的aircraft,来源为'Kolkata',目的地为'Ahmedabad'和sector.sectorID=flights.sectorID和bseats>0。