在Where子句中插入一个字符串变量

时间:2017-01-28 19:01:40

标签: java android mysql where-clause

如何使字符串变量searchQuerySearchResultsActivity传递到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, ...);

}

}

2 个答案:

答案 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);