Java 如何搜索数据库以验证其存在?
我一直在为这个类使用java数据库,我只是想搜索一下,看看是否存在与用户输入同名的条目。它过去是有效的,但对一些人来说,它一直说它不存在于数据库中,即使它存在。如果有人能给我一个解决方案,我将不胜感激Java 如何搜索数据库以验证其存在?,java,sql,user-interface,derby,Java,Sql,User Interface,Derby,我一直在为这个类使用java数据库,我只是想搜索一下,看看是否存在与用户输入同名的条目。它过去是有效的,但对一些人来说,它一直说它不存在于数据库中,即使它存在。如果有人能给我一个解决方案,我将不胜感激 private void btnSearchActionPerformed(java.awt.event.ActionEvent evt) { name = txtSearch.getText();
private void btnSearchActionPerformed(java.awt.event.ActionEvent evt) {
name = txtSearch.getText();
sr.setSearch(name);
try {
String url = "jdbc:derby://localhost:1527/Cookbook";
Connection conn = DriverManager.getConnection(url);
String sql = "SELECT * from RECIPES where NAME = ?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, name);
ResultSet rs = pst.executeQuery();
boolean found = false;
while (rs.next()) {
if (rs.getString(1).equalsIgnoreCase(name)) {
JOptionPane.showMessageDialog(null, "Found " + name);
found = true;
break;
}
}
if (found) {
this.dispose();
modifyingRecipe m = new modifyingRecipe();
m.setVisible(true);
} else {
JOptionPane.showMessageDialog(null, "Item Not Found!");
}
} catch (SQLException ex) {
Logger.getLogger(CookbookApp.class.getName()).log(Level.SEVERE, null, ex);
}
}
请提供一些有效和无效的示例。请提供完整的stacktrace。也许这可以回答您的问题:如果您只需要一个特定字段,为什么要执行
select*
?无论性能如何,如果不在select中指定字段,则数据库返回字段的顺序可能会有所不同(出于任何原因)。在这种情况下,getString(1)
不会引用名称,而是引用其他字段。我看到您在代码中执行了equalsIgnoreCase
,但在select语句中也执行了where name=?
。select中的where子句将执行区分大小写的搜索,因此如果希望查询匹配忽略大小写,则需要另一种方法。