我使用MySQL时遇到了这个问题。
PreparedStatement paisyprovincia_BBDD = bd.prepareStatement("SELECT id=? FROM tabla=? WHERE ? = ?");
paisyprovincia_BBDD.setString(1, "id");
paisyprovincia_BBDD.setString(2, "pais");
paisyprovincia_BBDD.setString(3, "paisnombre");
paisyprovincia_BBDD.setString(4,country.getSelectionModel().getSelectedItem().toString());
返回此错误:
问题在哪里?谢谢你的回答您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在''pais'附近使用正确的语法WHERE'paisnombre'='澳大利亚''在第1行
答案 0 :(得分:3)
你只需要
PreparedStatement paisyprovincia_BBDD = bd.prepareStatement("SELECT id FROM pais WHERE paisnombre = ?");
paisyprovincia_BBDD.setString(1,country.getSelectionModel().getSelectedItem().toString());
如果要将变量用于列的名称,可以在“Java级别”而不是“SQL级别”执行此操作。这里的要点是JDBC驱动程序将(可能)预编译您提供的SQL并重用已编译的本机数据库查询;如果列名称将更改,则无法执行此操作。所以你可以这样做:
private List<String> getValuesFromDB(String columnName) {
String sql = String.format("SELECT %s FROM pais WHERE paisnombre = ?", columnName);
PreparedStatement paisyprovincia_BBDD = bd.prepareStatement(sql);
paisyprovincia_BBDD.setString(1,country.getSelectionModel().getSelectedItem().toString());
// execute etc...
}
答案 1 :(得分:1)
将此作为您的SQL语句使用:
bd.prepareStatement("SELECT id FROM pais WHERE paisnombre = ?");
paisyprovincia_BBDD.setString(1, country.getSelectionModel().getSelectedItem().toString());