Java 为什么问号不在%%范围内工作?

Java 为什么问号不在%%范围内工作?,java,jdbc,Java,Jdbc,我使用javajdbc连接数据库sql server,但是%%中的问号不起作用 这是我的代码: public List<Account> findBetween(String search, int start, int size) { try { ArrayList<Account> list = new ArrayList<Account>(); String sql = "SELECT * FROM Ac

我使用javajdbc连接数据库sql server,但是
%%
中的问号不起作用

这是我的代码:

public List<Account> findBetween(String search, int start, int size) {
    try {
        ArrayList<Account> list = new ArrayList<Account>();
        String sql = "SELECT * FROM Account WHERE uname LIKE '%?%' ORDER BY user_id OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
        Connection conn = ConnectDB.openConnection();
        PreparedStatement st = conn.prepareStatement(sql);
        st.setNString(1, search);
        st.setInt(2, start);
        st.setInt(3, size);
        ResultSet rs = st.executeQuery();
        System.out.println(rs.getFetchSize());
        while (rs.next()) {
            list.add(new Account(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getNString(4), rs.getNString(5),
                    rs.getNString(6), rs.getString(7), rs.getString(8), rs.getDate(9), rs.getInt(10),
                    rs.getBoolean(11)));
        }
        ConnectDB.closeConnection();
        return list;
    } catch (Exception e) {
        e.printStackTrace();
        ConnectDB.closeConnection();
        return null;
    }           
}
public List findBetween(字符串搜索、整数开始、整数大小){
试一试{
ArrayList=新建ArrayList();
String sql=“SELECT*从按用户\u id OFFSET?行获取下一行?仅行取消类似“%”的订单的帐户”;
Connection conn=ConnectDB.openConnection();
PreparedStatement st=conn.prepareStatement(sql);
st.setNString(1,搜索);
圣塞廷(2,开始);
圣塞廷(3号,尺寸);
结果集rs=st.executeQuery();
System.out.println(rs.getFetchSize());
while(rs.next()){
添加新帐户(rs.getInt(1)、rs.getString(2)、rs.getString(3)、rs.getNString(4)、rs.getNString(5),
rs.getNString(6)、rs.getString(7)、rs.getString(8)、rs.getDate(9)、rs.getInt(10),
rs.getBoolean(11));
}
ConnectDB.closeConnection();
退货清单;
}捕获(例外e){
e、 printStackTrace();
ConnectDB.closeConnection();
返回null;
}           
}

绑定变量在字符串文本中不起作用

你要么把整个绳子绑起来

uname LIKE ?
st.setNString(1, "%" + search + "%")
或者使用字符串连接

uname LIKE '%' || ? || '%'
set.setNString(1, search)

请注意,在这两种情况下,
search
中包含的任何其他通配符也将有效,因此,如果这是直接用户输入,您可能需要先对其进行清理。

我找不到一个好的源代码,但基本上一个准备好的语句参数需要是一个完整的值,因此,您需要使用
LIKE?
并将
%
字符添加到
搜索中。它正在工作。非常感谢。