日期:2014-05-18  浏览次数:20661 次

小菜泣血跪求复选框问题
比如说写这样的一个程序
交办人:
    口张XX     口李XX   口王XX     口赵XX
交办事件:
    买东西!(这是不变的,只是选择张李王赵谁做的问题(有可能是一人做或几人做.))
  我要把复选的内容和交办的事件写入SJ表的   JBR   和JBSJ字段
我在a.jsp中写
<INPUT   type= "checkbox "   name=box   value= "张XX "> 张XX
<INPUT   type= "checkbox "   name=box   value= "李XX "> 李XX
<INPUT   type= "checkbox "   name=box   value= "王XX "> 王XX
<INPUT   type= "checkbox "   name=box   value= "赵XX "> 赵XX
在b.jsp中写
  String[]   box=request.getParameterValues( "box ");  
然后写:
st.executeUpdate( "insert   into   sj(jbr,jbsj)   values   ( ' "+box+ " ', "+sj+ " ') ");
"+sj+ "就是刚才得到的买东西!
但是当我复选张XX,王XX   ,赵XX的时候,表中只有一行数据,并且jbr的值为[Ljava.lang.String;@1f195fc   ,请问是怎么回事情?
正确的应该得到   jbr           jbsj
                            张XX           买东西
                            王XX           买东西
                            赵XX           买东西
请各位大虾看看

------解决方案--------------------
box是数组名,你要引用数组中的元素,应该是box[..]的形式
如st.executeUpdate( "insert into sj(jbr,jbsj) values ( ' "+box[1]+ " ', "+sj+ " ') ");的形式
------解决方案--------------------
(1)st.executeUpdate( "insert into sj(jbr,jbsj) values ( ' "+box+ " ', "+sj+ " ') ");
这本来就是执行一次SQL的insert,所以即使你得box数组里有3个值你也不可能有
jbr jbsj
张XX 买东西
王XX 买东西
赵XX 买东西
的情况。
(2)不知道 String[] box=request.getParameterValues( "box ");能不能取道你说期望的值,
你可以把box的值先打印出来看看结果对不;
<%for(int i=0;i <box.length();i++){
System.out.println( "box[ "+i+ "] = "+box[i]);
}
%>
即使box的值对那你得执行语句也应该是
for(ing i=0;i <box.length();i++){
st.executeUpdate( "insert into sj(jbr,jbsj) values ( ' "+box[i]+ " ', "+sj+ " ') ");
}

------解决方案--------------------
楼上说的没错,box是一个数组对象,不能直接显示的。
------解决方案--------------------
for(ing i=0;i <box.length();i++)
{
st.executeUpdate( "insert into sj(jbr,jbsj) values ( ' "+box[i]+ " ', "+sj+ " ') ");
}
这样就可以了

------解决方案--------------------
楼上正解
------解决方案--------------------
数组中的长度应该是一个属性,不是方法的去掉括号。
------解决方案--------------------
晕,数组你那样取数据当然错了,要用for循环,box.length()取得数组长度,然后一个一个insert。
for(ing i=0;i <box.length();i++){
st.executeUpdate( "insert into sj(jbr,jbsj) values ( ' "+box[i]+ " ', "+sj+ " ') ");
}
------解决方案--------------------
得长度不是方法,去掉括号。
for(ing i=0;i <box.length;i++){