【发布时间】:2013-04-29 14:59:48
【问题描述】:
我正在处理使用 java 的 sql 查询,其参数可能存在或不存在于查询中。
比如有一个http请求参数为:
- 姓名
- 开始
- 限制
在 jsp 中,我做了这样的事情。
if (request.getParameter("query") != null) {
query = request.getParameter("query");
}
if (request.getParameter("start") != null) {
start = Integer.parseInt(request.getParameter("start"));
}
if (request.getParameter("limit") != null) {
limit = Integer.parseInt(request.getParameter("limit"));
}
....
if (query != null) {
sql += " AND dbo.TABLENAME.namelike '%?%'";
}
if (start != null) {
sql += " AND RowNum >= ?";
}
if (limit != null) {
sql += " AND RowNum <= ?";
if (start == null)
start =0;
}
有没有什么简单的方法可以用 PreparedStatement 做到这一点?或者有什么更清洁的方法可以做到这一点。如果我没记错的话,必须在准备好的语句中首先指定 SQL 字符串,而不是后面。
【问题讨论】:
-
你会考虑使用IBatis还是Hibernate?
-
就是这样,这个项目一定不能用ORM,只能用jsp。这不是我的决定,我知道这很疯狂。
-
Codemwnci 的回答是不够的,你需要考虑很多。特别要注意特殊字符。
-
是的,我明白了,我很想使用 ORM,但我们的客户不接受。
-
您不能使用
like '%?%'。您必须使用like ?并将%字符放在绑定的字符串参数周围。
标签: java sql sql-server