2013-04-05 76 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