比如说写这样的一个程序
交办人:
  口张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     买东西
请各位大虾看看

解决方案 »

  1.   

    box是数组名,你要引用数组中的元素,应该是box[..]的形式
    如st.executeUpdate("insert into sj(jbr,jbsj) values ('"+box[1]+"',"+sj+"')");的形式
      

  2.   

    (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+"')");
    }
      

  3.   

    楼上说的没错,box是一个数组对象,不能直接显示的。
      

  4.   

    for(ing i=0;i<box.length();i++)
    {
      st.executeUpdate("insert into sj(jbr,jbsj) values ('"+box[i]+"',"+sj+"')");
    }
    这样就可以了
      

  5.   

    报这种错误,是怎么回事情
    C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\jxkh1_jsp.java:116: cannot resolve symbol
    symbol  : method length ()
    location: class java.lang.String[]
                  for(int i=0;i<box.length();i++)
      

  6.   

    for(int i=0;i<box.length;i++)
    不要括号
      

  7.   

    晕,数组你那样取数据当然错了,要用for循环,box.length()取得数组长度,然后一个一个insert。
    for(ing i=0;i<box.length();i++){
      st.executeUpdate("insert into sj(jbr,jbsj) values ('"+box[i]+"',"+sj+"')");
    }
      

  8.   

    得长度不是方法,去掉括号。
    for(ing i=0;i<box.length;i++){
      st.executeUpdate("insert into sj(jbr,jbsj) values ('"+box[i]+"',"+sj+"')");
    }