2014-03-05 33 views
0

我在DB FLIGHT_INFO中創建了一個表flight_data(帶9列)。該表的所有列爲VARCHAR(3or4or5)。儘管我可以在表中添加行(通過另一個java類),但我想編寫一個能夠讀取該表的每行的java類。 (注:主類DBaseReader.readDB();)這裏是我的努力從mysql表讀取時出錯

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

public class DBaseReader { 

static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
static final String DB_URL = "jdbc:mysql://localhost/FLIGHT_INFO"; 

static final String USER = "root"; 
static final String PASS = "123456"; 

private static Connection conn = null; 
private static Statement stmt = null; 

public static void readDB() { 

    String sql = "SELCET * FROM flight_data;"; //removing semi-colon doesn't solve problem 
    ResultSet rs = null; 

    String flightNo = null; 
    String dep = null; 
    String arr = null; 
    String date = null; 
    String flightTime = null; 
    String flightDuration = null; 
    String fare = null; 
    String seat_aval = null; 
    String flight_class = null; 

    try { 
     // STEP 2: Register JDBC driver 
     Class.forName("com.mysql.jdbc.Driver"); 

     // STEP 3: Open a connection 
     System.out.println("Connecting to database..."); 
     conn = DriverManager.getConnection(DB_URL, USER, PASS); 

     // STEP 4: Execute a query 
     System.out.println("Creating statement..."); 
     stmt = conn.createStatement(); 

     rs = stmt.executeQuery(sql);//line 47 where error occurs 
     // STEP 5: Extract data from result set 

     while (rs.next()) { 
      flightNo = rs.getString("flight_no"); 
      dep = rs.getString("dep"); 
      arr = rs.getString("arr"); 
      date = rs.getString("valid_till"); 
      flightTime = rs.getString("flight_time"); 
      flightDuration = rs.getString("flight_dur"); 
      fare = rs.getString("fare"); 
      seat_aval = rs.getString("seat_aval"); 
      flight_class = rs.getString("flight_class"); 

     } 

     // Display values 
     System.out.print("FLIGHT_NO: " + flightNo); 
     System.out.print("DEP: " + dep); 
     System.out.print("ARR: " + arr); 
     System.out.println("VALID_TILL: " + date); 
     System.out.print("FLIGHT_TIME: " + flightTime); 
     System.out.print("FLIGHT_DUR: " + flightDuration); 
     System.out.print("FARE" + fare); 
     System.out.println("SEAT_AVAL: " + seat_aval); 
     System.out.println("FLIGHT_CLASS: " + flight_class); 

     stmt.close(); 
     conn.close(); 
    } catch (SQLException se) { 
     // Handle errors for JDBC 
     se.printStackTrace(); 
    } catch (Exception e) { 
     // Handle errors for Class.forName 
     e.printStackTrace(); 
    } 

    try { 
     if (conn != null) 
      conn.close(); 
    } catch (SQLException se) { 
     se.printStackTrace(); 
    } 

} 
} 

但我得到以下錯誤信息:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELCET * FROM flight_data' at line 1 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) 
at com.mysql.jdbc.Util.getInstance(Util.java:381) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1031) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3376) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3308) 
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1837) 
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961) 
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2537) 
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2466) 
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1383) 
at services.DBaseReader.readDB(DBaseReader.java:47) 
at services.FlightSearchJDBC.main(FlightSearchJDBC.java:10) 

那麼如何從succefully表中讀出?

回答

1

Ehm ...怎麼樣「選擇」而不是「SELCET」? :)

+1

該死,電腦永遠不會說謊。 – KNU