如何使字符串变量searchQuery
从SearchResultsActivity
传递到SearchResultPresenter
字符串的where clause
部分。感谢
我的活动
public class SearchResultsActivity ...{
...
mPresenter.getUsers(searchQuery);
...
}
我的演示者
public class SearchResultPresenter ...{
...
public void getUsers(String searchQuery) {
String query = "....Contains(name, 'searchQuery') "; // this doesn't work, shows the method parameter `searchQuery` is never used.
String whereClause = String.format(query, ...);
}
}
答案 0 :(得分:0)
通常,您将使用PreparedStatement,字符串中的参数将只是一个问号。像这样:
Connection con = DriverManager.getConnection(url, "UN", "PW");
PreparedStatement ps = con.prepareCall("select * from table where contains(textcol,?)");
ps.setString(1,"the string that will replace the question mark");
///in your case
ps.setString(1,searchQuery);
ResultSet rs = ps.executeQuery();
如果参数是int,则执行ps.setInt(...)。 也可以,但不建议,只是将值连接到字符串中,但这可以打开你所有类型的问题,所以不要养成习惯这样做的习惯。
因此,在具体的代码中,您的搜索字符串变量可以直接放入ps.setString()方法,您的查询字符串可以是一个静态的最终类级别字符串,其中带有问号。
答案 1 :(得分:0)
您可以使用String.format()来完成此任务。
String query = String.format("....Contains(name, '%s')", searchQuery);