gpt4 book ai didi

Java.sql.SQLException 执行 SELECT

转载 作者:行者123 更新时间:2023-12-01 23:04:00 27 4
gpt4 key购买 nike

当我尝试执行此代码时:

    try {

pstm = connection.prepareStatement("SELECT * FROM Menu WHERE (menuName LIKE '?%')");
pstm.setString(1,searchedMenu.getMenuName());
rs = pstm.executeQuery();
while (rs.next()) {
Menu menu=new Menu();
menu.setMenuId(rs.getInt("menuId"));
menu.setMenuName(rs.getString("menuName"));
temp.add(menu);
}

我收到主题错误,为什么?我的目的是搜索一个字符串或其一部分。谢谢。

编辑:错误是:java.sql.SQLException:参数索引超出范围(1 > 参数数量,即 0)。它引用了这一行:pstm.setString(1,searchedMenu.getMenuName());

最佳答案

该错误可能是因为您没有任何要设置的参数标记,因为您将问号放入了字符串中:

menuName LIKE '?%'

所以当你这样做时:

pstm.setString(1,searchedMenu.getMenuName());

没有什么可设置的,会抛出错误。如果您检查堆栈跟踪,您可能会看到一条有关参数标记数量的消息。

您应该将百分比连接到 Java 中的字符串中。在 SQL 中连接它会提供不太一致的结果,具体情况因 RDBMS 而异。

所以我建议使用如下参数编写 SQL:

SELECT * FROM Menu WHERE (menuName LIKE ?)

然后在java代码中设置参数如下:

pstm.setString(1, searchedMenu.getMenuName() + "%");

如果您知道会有空格,还可以考虑修剪菜单名称。如果一堆空格后面有一个百分号,您的结果可能与您预期的不一样。

关于Java.sql.SQLException 执行 SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23064385/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com