求助,一个java取值的问题,怎么都看不出来毛病,在线等
代码如下:
SQLCommand sqlbean=new SQLCommand();
String sql=" select * from users ";
if (request.getParameter("findcondition") != null && !request.getParameter"findcondition").equals(""))
{
sql = CommFunc.encode(request.getParameter("findcondition"));
}
System.out.println(sql);
页面传递是这样的:
http://localhost:8080/newjn/users/find.do?findcondition=users_name%20like%20'%张%'
问题是每次我取得都是 select * from users
怎么都不能取得带查询条件的值,奇怪死了
希望能解答一下
问题点数:100、回复次数:15Top
1 楼yingtju(蚂蚁)回复于 2006-03-10 10:01:22 得分 10
你可以打印一下那个参数,可能是编码问题,可以试试英文行吗
最好吧sql语句能打印出来不就知道怎么回事了吗Top
2 楼shan__le(写累了,不想动了~~)回复于 2006-03-10 10:05:38 得分 0
怎么取值都是null,或者用其他什么方式可以取道吗?Top
3 楼shan__le(写累了,不想动了~~)回复于 2006-03-10 10:07:07 得分 0
哦,是换成ABC就能取到了,有什么方法能取道一个sql语句呢?Top
4 楼doway(john)回复于 2006-03-10 10:12:07 得分 70
String sql=" select * from users ";
String wh = request.getParameter("findcondition");
if (wh != null && wh.trim().length()>0)
{
sql += " where "+ wh;
}
Top
5 楼shan__le(写累了,不想动了~~)回复于 2006-03-10 10:17:56 得分 0
楼上的老大,不行,出来的还是 select * from users 这个值,后面的更本没有取到
正确的是users_name like '%张%'
不过最后多了一个;有影响没有?Top
6 楼shan__le(写累了,不想动了~~)回复于 2006-03-10 10:18:31 得分 0
但是取的时候没有啊,我alert打印出来都能看到的,是正确地啊?Top
7 楼shan__le(写累了,不想动了~~)回复于 2006-03-10 10:42:18 得分 0
或者怎么修改一下,能够变成submit事件,然后提交过去?我从后台取得?
代码如下:
function goFind()
{
alert(document.all("sqlcondition").value);
openNewWindow("<%=request.getContextPath()%>/users/find.do?sqlcondition="+document.all("sqlcondition").value,600,550);
//openNewWindow("<%=request.getContextPath()%>/users/find.do?findcondition=abc",600,550);
}Top
8 楼doway(john)回复于 2006-03-10 11:06:50 得分 0
在 IE 地址栏中直接输入 URL 的话是不会错的,客户端脚本问题。
Top
9 楼shan__le(写累了,不想动了~~)回复于 2006-03-10 11:14:04 得分 0
好像是多空格问题
openNewWindow("<%=request.getContextPath()%>/users/find.do?findcondition="+document.all("sqlcondition").value,600,550);
//openNewWindow("<%=request.getContextPath()%>/users/find.do?findcondition=abc",600,550);
后面的写法就可以取道,前面的就不行!取得是null,老大,这个是怎么回事啊?
求助求助,工程的最后一点了,关键啊Top
10 楼xiongxa(熊熊无量)回复于 2006-03-10 11:42:51 得分 20
SQL文定义可以按如下方式写:
String sql=" select * from users where users_name = ";
参数传递时分两种情况:
1.有条件时 :findcondition='%张%'
2.无条件时 :findcondition='%' (代表所有的)
JSP页面用以下方法取数时,打印出WH,确保它有数.
String wh = request.getParameter("findcondition");
然后按以下方法加入到SQL变量中
if (wh != null && wh.trim().length()>0)
{
sql += wh;
}Top
11 楼shan__le(写累了,不想动了~~)回复于 2006-03-10 12:54:15 得分 0
to xiongxa(熊熊无量)
这样是不会进入if判断内的,也就是说,前面取值也是一个NULL的值,但是如果不带空格,也就是%,那么就是正常取值,有建议 这样来取的
String findcondition = new String(request.getParameter("findcondition").toString().getBytes("ISO8859_1"), "GB2312");
但是出错,我是刚接触java时间不长,反正感觉java的字符串特别烦人,经常出现类型不对的问题。Top
12 楼xiongxa(熊熊无量)回复于 2006-03-10 13:44:35 得分 0
页面传递是这样的:
http://localhost:8080/newjn/users/find.do?findcondition=%张%'
不要有空格
String wh = request.getParameter("findcondition");
改写成:
String wh = null;
wh = request.getParameter("findcondition");
System.out.print("===:"+wh); (打印看一下,能不能打出"%张%" [引号内文字] )
如果打印出来说明正确,再用IF判断.
还有,本身的参数传递时一定是有值的,就可以不用判断了.
Top
13 楼xiongxa(熊熊无量)回复于 2006-03-10 13:46:33 得分 0
上面的接收参数,之后让来连接SQL文,让SQL有WHERE有条件,是完全没有问题的.
好好试一下了.Top
14 楼shan__le(写累了,不想动了~~)回复于 2006-03-10 14:20:39 得分 0
to xiongxa(熊熊无量) ( )
你理解错了,这个参数不是我控制的,而是通过一个通用查询过来的,不可能把空格去掉
这个%%也是java自动给的,直接在本页面alert这个文本矿的内容是没错,但是作为参数传递就不对,那么我想有没有提交的方式可以取得?但是页面又是标签生成的,也比较麻烦,不知道怎么解决好了Top
15 楼shan__le(写累了,不想动了~~)回复于 2006-03-10 14:37:10 得分 0
唉,搞不定啊,为什么java这么麻烦呢?Top




