to:tomuno(tomuno) 
jdbc string 4000  什么意思?
 
to:yangbc(yangbc) 
我没有用到,主要是这个和连接池有关系吗?我想知道这个

解决方案 »

  1.   

    是不是 因为 你的连接的属性的问题,?  autocommit =false; 然后每次提交的是 15个行数据的 sql 。。不知道, 我瞎猜的。另外,你看看是不是 在 操作过程中,有一些异常你没有 捕获啊。 有可能是 数据 不合法的问题呢。
      

  2.   

    to:
    lyqq(曾经是菜,现在还是菜!) 我在控制台输出的数据,后来用存储过程执行,没有问题的,
    所以不是数据不合法的问题吧!
      

  3.   

    一楼的意思是jdbc的显示,只能一次传送4000个字符吧,我觉得也有可能是你的一次传送字符过多,所以被自动截去的原因~~~
      

  4.   

    to:kidman521
    我也曾经想过JDBC是不是有限制,但是我的130行记录,每个记录往后台传的值最多是21个字符,
    那也就是不超过3000个,所以我感觉这个假设也不成立.
    to:lyqq
    要是不能一次把所有的数据都提取出来,再和数据库交互,那每次都和数据库交互的话,对数据库的性能
    将会大大的影响,也可能会崩溃.我想.请教大家能给我个思路!
      

  5.   

    我碰到并解决的问题和楼主的相近,要是楼主不麻烦的话,把JSP和BEAN的关键部分给大家看看.
      

  6.   

    JSP提取数据库的程序代码:
    <%
    String jlID = (String)request.getParameter("jlID");
    System.out.println(jlID);
    String proID = (String)request.getParameter("proID");
    System.out.println(proID);
    String year = (String)request.getParameter("year");
    String month = (String)request.getParameter("month");
    String thispro = util.GetStr((String)request.getParameter("thispro"));
    System.out.println(thispro);
    String passing = util.GetStr((String)request.getParameter("passing"));
    String re = util.GetStr((String)request.getParameter("re"));
    boolean executeFlag = PlanAndProBean.proMag_chk(jlID,proID, year, month, thispro,passing,re);//调用bean中的方法
           if(executeFlag) {
                 out.println("<center>操作成功!</center>");
    %>
                 <a href="chkprojectProcessMag.jsp">返回</a>
           <%}else {
                 out.println("<center>有错误发生</center>");
           }
    %>
    --------------------
    BEAN中的方法用来保存数据:
    public static boolean ProProSave(String projectID,//工程编号
                                     String year,//工程年度
                                     String month,//工程月份
                                     String endmonthpro,//月末形象进度                                 
                                     String re//备注
                ) throws Exception{    
         DBConnection db=new DBConnection();
            try{
                 String str1 = "{call promag_savajl(?,?,?,?,?)}";
                 CallableStatement cmt = db.prepareCall(str1);
                 cmt.setString(1, projectID);
                 cmt.setString(2, year);
                 cmt.setString(3, month);
                 cmt.setString(4, endmonthpro);            
                 cmt.setString(5, re);
                 cmt.execute();
            }catch(Exception e){
                throw e;
            }finally {
             db.close();
            }
            return true;
        }
    数据库存储过程
    ----------------------------------------ALTER        procedure promag_savajl
    @proid         varchar(8000), --工程编号
    @year          varchar(20),--工程年度
    @month         varchar(10),--工程月份
    @endmonthpro   varchar(8000),--月末形象进度
    @re        varchar(8000)--备注
    as
    declare
    @partproid       varchar(50),
    @partendmonthpro varchar(20),
    @partre      varchar(50)
    begin
    set @proid = @proid + 'finish'
    set @endmonthpro=@endmonthpro+ 'finish'
    set @re=@re+'finish'
    set @partproid = substring(@proid, 0, charindex(',', @proid))
    set @partendmonthpro = substring(@endmonthpro, 0, charindex(',', @endmonthpro))
    set @partre = substring(@re, 0, charindex(',', @re))
    while (@proid <> 'finish')
    begin
    set @proid = substring(@proid, charindex(',', @proid)+1, len(@proid)-charindex(',', @proid)+1)
    set @endmonthpro = substring(@endmonthpro, charindex(',', @endmonthpro)+1, len(@endmonthpro)-charindex(',', @endmonthpro)+1)
    set @re = substring(@re, charindex(',', @re)+1, len(@re)-charindex(',', @re)+1)
    select * from EngProTable where 工程编号=@partproid and 年度=@year and 月份=@month
    if @@rowcount = 0
    begin
    insert into EngProTable(工程编号,年度,月份,月末形象进度,备注)
    values
    (@partproid,@year,@month,@partendmonthpro,@partre)
    end
    else 
    begin
    update EngProTable set 月末形象进度=@partendmonthpro,备注=@partre
    where 工程编号=@partproid and 年度=@year and 月份=@month
    end
    set @partproid = substring(@proid, 0, charindex(',', @proid))
    set @partendmonthpro = substring(@endmonthpro, 0, charindex(',', @endmonthpro))
    set @partre = substring(@re, 0, charindex(',', @re))
    end
    end
    ---------------------备注:页面提取的数据库完全正确,把页面的数据,直接在后台执行,也正确,但是通过bean就不正确了!
      

  7.   

    写得不是很清楚,特别是JSP和ActionForm,你在JSP中通过你的代码怎么能取得多行的数据呢?我的思路和你不同,但是要实现的功能是相同的,不过我的单据是定长的而且不超过20行.大体和下面的文章差不多,这也是我后来找到的:
    http://www.jetmaven.net/documents/j_useJBean_List_inStruts.php
      

  8.   

    楼上的,谢谢你,我的已经实现了!主要是因为connection的问题!现在已经解决了!
    谢谢!