【发布时间】:2015-04-15 01:49:48
【问题描述】:
我在我的软件中使用 SQLite 本地数据库。我想根据行的给定值检查行是否存在。例如:"SELECT * FROM ftp WHERE Host LIKE '"+ host +"' AND Username LIKE '"+ username +"' "
但我想得到布尔结果,所以如果找到记录做某事,如果没有做其他事情。我可以这样做吗?
这是我厌倦的,但它总是正确的,因为它检查查询是否运行,而不是它是否返回数据。
public void ftpTableCheck(String host, String port, String username, String password){
try{
String query = "SELECT * FROM ftp WHERE Host LIKE '"+ host +"' AND Username LIKE '"+ username +"' ";
PreparedStatement pst = conn.prepareStatement(query);
if (pst.execute() == true){
System.out.println("true");
}
}catch(Exception e){
e.printStackTrace();
}
}
知道如何解决吗? 谢谢
【问题讨论】:
-
你可以使用
select count(*) ...,它会返回一个包含匹配结果数量的单行...你可以试试select (count(*) > 0) as found ...或其他东西(ps-未测试;)) -
我用 H2 进行了测试(没有安装 SQLite),
select (count(*) > 0) as found ...为我工作并返回了一个布尔结果 -
你说得对,它正在工作,即使是 COUNT(*) 也能在任何 SQL 软件中工作并给出正确的值。但在 java 中,我必须通过 ResultSet 获取查询结果,而这个类似乎没有任何方法来显示行数。这就是我要找的