jsp的一个问题,好奇怪! to:tomuno(tomuno) jdbc string 4000 什么意思? to:yangbc(yangbc) 我没有用到,主要是这个和连接池有关系吗?我想知道这个 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是不是 因为 你的连接的属性的问题,? autocommit =false; 然后每次提交的是 15个行数据的 sql 。。不知道, 我瞎猜的。另外,你看看是不是 在 操作过程中,有一些异常你没有 捕获啊。 有可能是 数据 不合法的问题呢。 to:lyqq(曾经是菜,现在还是菜!) 我在控制台输出的数据,后来用存储过程执行,没有问题的,所以不是数据不合法的问题吧! 一楼的意思是jdbc的显示,只能一次传送4000个字符吧,我觉得也有可能是你的一次传送字符过多,所以被自动截去的原因~~~ to:kidman521我也曾经想过JDBC是不是有限制,但是我的130行记录,每个记录往后台传的值最多是21个字符,那也就是不超过3000个,所以我感觉这个假设也不成立.to:lyqq要是不能一次把所有的数据都提取出来,再和数据库交互,那每次都和数据库交互的话,对数据库的性能将会大大的影响,也可能会崩溃.我想.请教大家能给我个思路! 我碰到并解决的问题和楼主的相近,要是楼主不麻烦的话,把JSP和BEAN的关键部分给大家看看. 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)--备注asdeclare @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)) endend---------------------备注:页面提取的数据库完全正确,把页面的数据,直接在后台执行,也正确,但是通过bean就不正确了! 写得不是很清楚,特别是JSP和ActionForm,你在JSP中通过你的代码怎么能取得多行的数据呢?我的思路和你不同,但是要实现的功能是相同的,不过我的单据是定长的而且不超过20行.大体和下面的文章差不多,这也是我后来找到的:http://www.jetmaven.net/documents/j_useJBean_List_inStruts.php 楼上的,谢谢你,我的已经实现了!主要是因为connection的问题!现在已经解决了!谢谢! 关于annotation自动创建表!报错 请问这个报错怎么解决? 工作流监听器 javaweb+tomcat工程(服务器)访问路径如何配置? hibernate JPA 单表树形结构 注解配置。(已解决) 各位帮帮小弟 高分请教IMAGE问题(在CSDN始终搜索不到好的答案)! 网上下了个马士兵JSP网上商城项目源码不知道后台管理员密码怎么进 为什么不能获得request的参数? 一个简单的问题,散分求解 在线等 MSSQL我不喜欢,但还有要用,问题还是一大把!!! 循环往表中插入数据,如何进行错误处理???
lyqq(曾经是菜,现在还是菜!) 我在控制台输出的数据,后来用存储过程执行,没有问题的,
所以不是数据不合法的问题吧!
我也曾经想过JDBC是不是有限制,但是我的130行记录,每个记录往后台传的值最多是21个字符,
那也就是不超过3000个,所以我感觉这个假设也不成立.
to:lyqq
要是不能一次把所有的数据都提取出来,再和数据库交互,那每次都和数据库交互的话,对数据库的性能
将会大大的影响,也可能会崩溃.我想.请教大家能给我个思路!
<%
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就不正确了!
http://www.jetmaven.net/documents/j_useJBean_List_inStruts.php
谢谢!