---------------bean----------- public class ChartWeek { ..... public void gGeneration(){//float [] heightA) { ............ xPce=new int[length]; yDate=new int[length]; GetData instance=new GetData(length); xPce=instance.getXPce(); yData=instance.getYData(); ......... } class GetData { ......... public GetData(int n){ weekNum=n; yData=get(1); } public float[] getXPce() { return xPce; } public int[] getYData(){ return yData; } public int[] get(int type){ int [] temp=new int[weekNum]; temp=getByWeek(year); xPce=new float[weekNum]; for(int i=0;i<temp.length;i++){ //System.out.println("yData["+i+"] :"+temp[i]+" "); xPce[i]=(float)temp[i]/(float)(5*licenseNum*60*8);//5天工作日 System.out.println(temp[i]+" "+xPce[i]+" "+5*licenseNum*60*8); } return temp; } public int getTime(String dev , java.util.Date start , java.util.Date end){ //单位:minute int time=0; //从视图中去查询结果 //access //String exeStr="select DISTINCTROW sum(Usingtime) from Worked where (((Outtime between #"+start.toLocaleString()+"# and #"+end.toLocaleString()+"#) OR (Intime between #"+start.toLocaleString()+"# and #"+end.toLocaleString()+"#) OR (Outtime <= #"+start.toLocaleString()+"# and Intime >= #"+end.toLocaleString()+"#)) and (Licensename in ('board_s','boarddes_c','designarch_c')))"; //SQL Server String exeStr="select sum(Usingtime) from Worked where (((Outtime between '"+start.toLocaleString()+"' and '"+end.toLocaleString()+"') OR (Intime between '"+start.toLocaleString()+"' and '"+end.toLocaleString()+"') OR (Outtime <= '"+start.toLocaleString()+"' and Intime >= '"+end.toLocaleString()+"')) and (Licensename in ('board_s','boarddes_c','designarch_c')))"; //使用SQLServer 2000时要求去掉distinctrow 修饰 try{ Class.forName(Conn.jdbcDriver); conn = DriverManager.getConnection(Conn.dbpath,Conn.user,Conn.password); stmt = conn.createStatement(); rs=stmt.executeQuery(exeStr); teststring=exeStr; while(rs.next()){ time=rs.getInt(1); testpoint++; } } catch(SQLException se){exception.append(se.getMessage());se.printStackTrace();} catch(Exception e){e.printStackTrace();} finally{ close(); } return time; } public int[] getByWeek(String year){ int yearInt=Integer.parseInt(year); int [] year_week=new int[weekNum]; java.util.Date start=new java.util.Date(); java.util.Date end=new java.util.Date(); int month1=0; int month2=0; start.setMonth(0); start.setDate(3); start.setHours(0); start.setMinutes(0); start.setSeconds(0); end.setMonth(0); end.setDate(9); end.setHours(0); end.setMinutes(0); end.setSeconds(0); for(int i=1;i<=weekNum;i++) { //初始第一周 01/03--01/09 //选择调取数据 year_week[i-1]=getTime("all",start,end); System.out.println(year_week[i-1]+" start "+start.toLocaleString()+" end "+end.toLocaleString());
在如果是通过jsp运行bean,则int结果返回为 0
因为查询的结果在bean中就即为 0 了
所以不是显示的问题
改为查询access数据库,完全是正常的
所以说明程序看起来是没有问题的
为什么就在查询SQL是出问题呢?
<%@ page contentType="text/html; charset=ISO8859_1"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.text.*"%>
<%@ page buffer="20kb"%>
<%@ page import="test.week.ChartWeek" %>
<html><body><center>
<%--response.setHeader("Refresh","2");--%><!--设定页面刷新时间-->
<jsp:useBean id="cg" class="test.week.ChartWeek" scope="application"/>
<%
cg.gGeneration();
%>
.......
public class ChartWeek
{
.....
public void gGeneration(){//float [] heightA) { ............
xPce=new int[length];
yDate=new int[length];
GetData instance=new GetData(length);
xPce=instance.getXPce();
yData=instance.getYData();
.........
}
class GetData {
.........
public GetData(int n){
weekNum=n;
yData=get(1);
} public float[] getXPce() {
return xPce;
}
public int[] getYData(){
return yData;
} public int[] get(int type){
int [] temp=new int[weekNum];
temp=getByWeek(year);
xPce=new float[weekNum];
for(int i=0;i<temp.length;i++){
//System.out.println("yData["+i+"] :"+temp[i]+" ");
xPce[i]=(float)temp[i]/(float)(5*licenseNum*60*8);//5天工作日
System.out.println(temp[i]+" "+xPce[i]+" "+5*licenseNum*60*8);
}
return temp;
}
public int getTime(String dev , java.util.Date start , java.util.Date end){
//单位:minute
int time=0;
//从视图中去查询结果
//access
//String exeStr="select DISTINCTROW sum(Usingtime) from Worked where (((Outtime between #"+start.toLocaleString()+"# and #"+end.toLocaleString()+"#) OR (Intime between #"+start.toLocaleString()+"# and #"+end.toLocaleString()+"#) OR (Outtime <= #"+start.toLocaleString()+"# and Intime >= #"+end.toLocaleString()+"#)) and (Licensename in ('board_s','boarddes_c','designarch_c')))";
//SQL Server
String exeStr="select sum(Usingtime) from Worked where (((Outtime between '"+start.toLocaleString()+"' and '"+end.toLocaleString()+"') OR (Intime between '"+start.toLocaleString()+"' and '"+end.toLocaleString()+"') OR (Outtime <= '"+start.toLocaleString()+"' and Intime >= '"+end.toLocaleString()+"')) and (Licensename in ('board_s','boarddes_c','designarch_c')))";
//使用SQLServer 2000时要求去掉distinctrow 修饰
try{
Class.forName(Conn.jdbcDriver);
conn = DriverManager.getConnection(Conn.dbpath,Conn.user,Conn.password);
stmt = conn.createStatement();
rs=stmt.executeQuery(exeStr);
teststring=exeStr;
while(rs.next()){
time=rs.getInt(1);
testpoint++;
}
}
catch(SQLException se){exception.append(se.getMessage());se.printStackTrace();}
catch(Exception e){e.printStackTrace();}
finally{
close();
}
return time;
}
public int[] getByWeek(String year){
int yearInt=Integer.parseInt(year);
int [] year_week=new int[weekNum];
java.util.Date start=new java.util.Date();
java.util.Date end=new java.util.Date();
int month1=0;
int month2=0;
start.setMonth(0);
start.setDate(3);
start.setHours(0);
start.setMinutes(0);
start.setSeconds(0);
end.setMonth(0);
end.setDate(9);
end.setHours(0);
end.setMinutes(0);
end.setSeconds(0);
for(int i=1;i<=weekNum;i++)
{
//初始第一周 01/03--01/09
//选择调取数据
year_week[i-1]=getTime("all",start,end);
System.out.println(year_week[i-1]+" start "+start.toLocaleString()+" end "+end.toLocaleString());
start.setDate(start.getDate()+7);
end.setDate(end.getDate()+7);
}
return year_week;
}
...........
}
ms的JDBC是很恶心的。不过,既然你说application没问题,估计问题也不在这。建议使用开源SourceForge的jtds.
jtds-0.8.1.jar放在如:E:\j2sdk1.4.2\jre\lib\ext下,就可用。环境变量都不用设public static final Connection getSQLServerConByJTDS() throws Exception
{
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=yfweb","yfuser" ,"yfuser" );
}
catch (Exception ex) {
System.out.println("[getSQLServerConnection] error : " + ex.getMessage());
}
return connection; } // end getSQLServerConnection
用ms的jdbc时是出现了异常,就是惟独出现在jsp中jtds好象还是要设置的吧
找不到class中