0

我有这个 MySQL 查询

SELECT 
    kompetence.kompetence_odlisujici_subcategories.nazev as odlisujici_nazev, 
    tolerovana, 
    zadana, 
    aktualni
FROM kompetence_odlisujici, kompetence.kompetence_odlisujici_subcategories
WHERE kompetence_odlisujici.os_cislo_zamestnanec = ? 
AND tolerovana <> 0 
AND zadana <> 0 
AND aktualni <> 0 
AND year = ? 
AND IPR.kompetence_odlisujici.active = 1
AND kompetence.kompetence_odlisujici_subcategories.id = PR.kompetence_odlisujici.id_odlisujici_subcategory

如果我在 MySQL Workbench 中尝试它,它工作正常但是当我尝试在我的 java 代码中使用它时,我得到了这个错误

SQLException :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE kompetence_odlisujici.os_cislo_zamestnanec = '123456' AND tolerovana <> 0 ' at line 1

我究竟做错了什么?

谢谢你的帮助。

编辑java代码

DataSourcePool dspService = sling.getService(DataSourcePool.class);
DataSource dsMySql = (DataSource) dspService.getDataSource("myConnection");
PreparedStatement preparedStatement = null;
if(dsMySql != null){
String sqlQuery = "SELECT kompetence.kompetence_odlisujici_subcategories.nazev as odlisujici_nazev, tolerovana, zadana, aktualni"+
                "FROM IPR.kompetence_odlisujici, kompetence.kompetence_odlisujici_subcategories "+
                "WHERE IPR.kompetence_odlisujici.os_cislo_zamestnanec = ? AND tolerovana <> 0 AND zadana <> 0 AND aktualni <> 0 AND year = ? AND IPR.kompetence_odlisujici.active = 1"+
                "AND kompetence.kompetence_odlisujici_subcategories.id = IPR.kompetence_odlisujici.id_odlisujici_subcategory";
  Connection mySqlConnection = mySqlConnection = dsMySql.getConnection();
    preparedStatement = mySqlConnection.prepareStatement(sqlQuery);
  String workingUser = this.getWorkingUser();
  int year = Calendar.getInstance().get(Calendar.YEAR);
    preparedStatement.setString(1, workingUser);
    preparedStatement.setInt(2, year);
  ResultSet resultSet = preparedStatement.executeQuery();
  resultSet.last();
    int count = resultSet.getRow();
    resultSet.beforeFirst();
  /*
  parse result set here
  */
}
4

1 回答 1

2
String sqlQuery = "SELECT kompetence.kompetence_odlisujici_subcategories.nazev as odlisujici_nazev, tolerovana, zadana, aktualni "+
                "FROM IPR.kompetence_odlisujici, kompetence.kompetence_odlisujici_subcategories "+
                "WHERE IPR.kompetence_odlisujici.os_cislo_zamestnanec = ? AND tolerovana <> 0 AND zadana <> 0 AND aktualni <> 0 AND year = ? AND IPR.kompetence_odlisujici.active = 1 "+
                "AND kompetence.kompetence_odlisujici_subcategories.id = IPR.kompetence_odlisujici.id_odlisujici_subcategory";

aktualni和之间没有空格, 和 之间也FROM没有空格。IPR.kompetence_odlisujici.active = 1AND kompetence.kompetence_odlisujici_subcategories.id = IPR.kompetence_odlisujici.id_odlisujici_subcategory

另外我的建议是你private static final在课堂上进行这些查询。

于 2013-11-03T20:52:18.437 回答