我有一个名为 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/