【问题标题】:unusual SQL Exception in java, using derby databasejava中的异常SQL异常,使用derby数据库
【发布时间】:2013-04-05 15:20:09
【问题描述】:

下面是我用来从数据库中获取值的代码:

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

);

我可能错在哪里?我错过了什么吗?我可以对此有所了解吗?

谢谢。

【问题讨论】:

  • 您发布了您的用户名和密码。可能不是一个好主意。
  • 哦!谢谢,我以后会注意的。

标签: java sql derby


【解决方案1】:

USER 是保留关键字,您不能这样命名您的表。检查here

【讨论】:

  • 如果实在想用USER这个词作为表名或列名等,可以用双引号括起来,如SELECT * FROM "USER"
  • 确实——你可以。但是,在我看来,这将是一种非常糟糕的做法,因为它可能会在以后让您感到悲伤,因为您需要注意转义 SQL 代码。
猜你喜欢
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 2014-01-08
  • 2013-10-26
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
  • 2011-07-15
相关资源
最近更新 更多