java - SQL 语句失败,即使数据库中有实体

标签 java sql eclipse hsqldb

我有一个名为 Produkt 的表,在这个表中有几个名为 test 的产品。

当我想执行该代码时:

public Produkt findByName(String name) throws SQLException{
    log.error("Enter findByName with parameters: " + name);
    PreparedStatement ps;
    ResultSet rs = null;
    String query = "SELECT * FROM Produkt WHERE name=" + name;
    ps=hsqlmanager.getConnection().prepareStatement(query);
    rs = ps.executeQuery();
    ps.close();
    if(rs.next()) return(new Produkt(rs));
    else return(null);
}

它总是给我一个sql错误:

Exception in thread "main" java.sql.SQLSyntaxErrorException: user
lacks privilege or object not found: TEST   at
org.hsqldb.jdbc.Util.sqlException(Unknown Source)   at
org.hsqldb.jdbc.Util.sqlException(Unknown Source)   at
org.hsqldb.jdbc.JDBCPreparedStatement.<init>(Unknown Source)    at
org.hsqldb.jdbc.JDBCConnection.prepareStatement(Unknown Source)     at
dao.DAOProdukt.findByName(DAOProdukt.java:157)  at
dao.test_produkt_dao.main(test_produkt_dao.java:23)

为什么?我很感激你的回答!!!

更新:

为什么PS用错了?请告诉我,以便我可以从中学习?

最佳答案

您正在生成无效的 SQL 语句,您的 name 参数没有引号

String query = "SELECT * FROM Produkt WHERE name='" + name + "'";
                                                 ^--      ^^^^^^

关于java - SQL 语句失败,即使数据库中有实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12606074/

相关文章:

java - 正则表达式多行 checkstyle 模块不起作用

java - 封装问题

java - Django 中的 MessageSource 等效项?

java - 如何在没有 Controller 的情况下使用SpringMVC,使用ViewControllerRegistry和addViewController()等?

使用 max 函数的 SQL 内连接

java - 如何以编程方式查找 Eclipse 中正在运行的项目

java - maven jetty 在 eclipse 中没有正常关闭

java - 继承中的方法调用出现问题

sql - 事务隔离和从SQL Server Express和SQL Server 2005上的多个表中读取

sql - SQL 语句中不能使用分号。我该怎么办?