java - MySQL 给出正确的输出,但 Java 引发异常

标签 java mysql sql

我想显示以下信息 -

日期航类 |名称 出发时间 |商务舱可用性 |行政舱可用性 |经济舱可用性

现在所有信息都在不同的表中

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 部分 - 然后我将从 Scheduledflights 表中获取日期和航类号匹配的记录。 当我在 MySQL 查询窗口中运行此查询时,我得到了正确的输出,但是当我在 Java 中执行相同的查询时,它给了我一个错误 -

Column Index out of range, 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);
           }

抛出异常,因为我试图从结果集中不可用的多个数据中获取数据

感谢大家关注我的问题。 但我仍然很困惑如何从不同的表中获取数据。我是否需要对每列数据进行多次查询?

关于java - MySQL 给出正确的输出,但 Java 引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17113146/

相关文章:

PHP 无法计算 4 个数据输出

java - 如何连接 Android Studio 和 SQL Server 数据库?

java - 在 OneToMany 和 ManyToMany 映射中获取 StackOverflow

java - pojo 中存在未知的 XML 文件

php - SQL Select 对多列进行计数并排序

mysql - GROUP_CONCAT 中的多个 COALESCE - 如果只有第一列不为空,则显示值

java - 如何在 x 秒后处理 JOptionPane

MySQL锁定表

java - 找不到与限定符 'transactionManager' 匹配的 PlatformTransactionManager bean

python - mysql python 合并结果