java sqlite - 显示选择

时间:2015-06-06 18:58:07

标签: java database sqlite

这些是我的表:
http://sqlfiddle.com/#!5/acdb1

我希望用Java显示raport:

 Connection c = null;
    Statement stmt = null;
    try {
      Class.forName("org.sqlite.JDBC");
      c = DriverManager.getConnection("jdbc:sqlite:project.db");
      c.setAutoCommit(false);
      System.out.println("Opened database successfully");

      stmt = c.createStatement();
      ResultSet rs = stmt.executeQuery( "SELECT stormtrooper.id, squad.id, platoon.id, company.id, battalion.id FROM stormtrooper\n" +
"INNER JOIN squad ON squad.id=stormtrooper.squad\n" +
"INNER JOIN platoon ON platoon.id=squad.platoon\n" +
"INNER JOIN company ON company.id=platoon.company\n" +
"INNER JOIN battalion ON battalion.id=company.battalion;" );
      String log = "";
      while ( rs.next() ) {
         log+=rs.getInt("id") + " | ";
         log+=rs.getInt("id") + " | ";
         log+=rs.getInt("id") + " | ";
         log+=rs.getInt("id") + " | ";
         log+=rs.getInt("id") + "\n";
      }
      jTextArea1.setText(log);  
         rs.close();
      stmt.close();
      c.close();
    } catch ( Exception e ) {
      jTextArea1.setText( e.getClass().getName() + ": " + e.getMessage() );
    }

SELECT语句是正确的 - 我检查了这个。但是,当我尝试在Java中执行此操作时,我收到了错误:

ambiguous column: 'id' 

应该怎么样?

1 个答案:

答案 0 :(得分:1)

您的id声明中有很多SELECT

您必须使用以下内容更改列名称:

SELECT stormtrooper.id AS stormtrooper_id, squad.id AS squad_id, platoon.id AS platoon_id, company.id AS company_id, battalion.id AS battalion_id FROM ...