我有一个函数检查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;
}
在我的JSP页面中,我将调用此函数并将参数传递给它。
String v=fileFacade1.get_value(fileID,date);
if(v !=null ){
// if the records exist in the table, do this
}
我试图调用该函数,所以如果表中有记录,然后输入if语句并做一些事情但是从我调试的东西,v的值总是为null但是有来自singleresult
的记录。
我做错什么了吗?
编辑:
这就是现在的样子:
public String get_value(long nodeid,String ts) {
try {
String sql="Select URL FROM urllink WHERE URL='f0="+nodeid+"&ts="+ts + "'";
if (em == null) {
throw new Exception("could not found URL object.");
}
em.createNativeQuery(sql).getSingleResult();
return (String)em.createNativeQuery(sql).getSingleResult();
// return 1;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
你需要返回getSingleResult()
return (String)em.createNativeQuery(sql).getSingleResult();
执行返回单个结果的SELECT查询。
如果在其他条件下,只需将你的代码包装在里面,我的意思是当em
为null时抛出异常或返回单个字符串,如下面的代码片段:
public String get_value(long nodeid,String ts) {
try {
String sql="Select URL FROM urllink WHERE URL='f0="+nodeid+"&ts="+ts + "'";
if (em == null) {
throw new Exception("could not found URL object.");
}
else{
return (String)em.createNativeQuery(sql).getSingleResult();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
您的方法始终返回null。
此外,也许这只是一个片段,你的实际代码中缺少一些东西,但是em
什么时候才能实现? (我假设它是一个类变量)
最后,你正在调用getSingleResult
但没有对实际结果做任何事情,这是你应该返回的,如@ user7294900的回答所示
return (String) em.createNativeQuery(sql).getSingleResult();