2013-04-05 44 views
1

下面是我使用的用於獲取值碼形成數據庫:異常SQL異常在Java中,使用Derby數據庫

try { 

    Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance(); 
    connect = DriverManager 
     .getConnection("jdbc:derby://localhost:1527/TedW;user=x;password=x;"); 
    PreparedStatement statement = connect 
     .prepareStatement("SELECT * FROM USER"); 

    resultSet = statement.executeQuery(); 
    while (resultSet.next()) { 
    String user = resultSet.getString("Username"); 
    String password = resultSet.getString("Password"); 
    System.out.println("User: " + user); 
    System.out.println("ID: " + password); 
    } 
} catch (Exception e) { 
    System.out.println(e); 
} 

的問題是,當我運行它,它顯示了異常:

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "USER" at line 1, column 15. 

我發現表名「USER」存在一些問題。我看到它時,我創建的數據庫是一樣的。這是在德比amde。以下是該代碼:

CREATE TABLE "USER" 
(
"Id" INT not null primary key generated always as identity (START WITH 1, INCREMENT BY 1), 
"Username" VARCHAR(20) NOT NULL, 
"Password" VARCHAR(20) NOT NULL 

); 

我哪裏可能是錯的?我錯過了什麼嗎?我能得到一些見解嗎?

謝謝。

+0

您發佈了您的用戶名和密碼。可能不是一個好主意。 – Hogan 2013-04-05 15:21:43

+0

哦!謝謝,我將來會看到它。 – 2013-04-05 15:24:16

回答

2

USER是一個保留關鍵字,你不能這樣命名你的表。檢查here

+0

如果你真的想用USER這個詞作爲表或列的名字等等,你可以把它放在雙引號中,就像在SELECT * FROM「USER」中一樣 – 2013-04-05 18:46:09

+0

確實 - 你可以。然而,在我看來,這將是一個非常糟糕的做法,因爲它可能會導致你後來的悲傷,因爲你將需要照顧轉義的SQL代碼。 – carlspring 2013-04-07 02:13:58