我正在调用一个函数,该函数尝试检查MYSQL表中是否存在特定记录。
功能:
public String get_value(long nodeid,String ts) {
try {
String sql="Select URL FROM urllink WHERE URL="+"'f0='"+nodeid+"'&ts='"+ts;
em.createNativeQuery(sql).getSingleResult();
if (em == null) {
throw new Exception("could not found URL object.");
}
// return 1;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
当转到getSingleResult()
时,它会抛出:
PersistenceException:SQLGrammarException: Could not extract resultset
我检查了我的SQL查询,看起来很好,所以我不确定出了什么问题。
调用者函数:
String v=fileFacade1.get_value(fileID,date);
if(v !=null ){
// if the URL column contains the result, do something.
}
答案 0 :(得分:3)
我认为,您缺少一个参数:
"Select URL FROM urllink WHERE URL="+"'f0='"+nodeid+"'&ts='"+ts
^ here
因为解析后查询是:
Select URL FROM urllink WHERE URL='f0='nodeid'&ts='ts
另一件事是&
在sql中不是有效的逻辑运算符,应改为使用and
。
编辑:如果您希望它成为where
子句中的一个字符串,则可能意味着:
"Select URL FROM urllink WHERE URL='f0="+nodeid+"&ts="+ts + "'"