Java 为什么问号不在%%范围内工作?
我使用javajdbc连接数据库sql server,但是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
%%
中的问号不起作用
这是我的代码:
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?
并将%
字符添加到搜索中。它正在工作。非常感谢。