我的就是sql server 2000,怎么没问题,但据说微软的jdbc很不好用(用心很险恶)

解决方案 »

  1.   

    既然bean没错,那问题就可能出在调用bean或调用后显示的地方没有代码无法判断
      

  2.   

    经过调试
    在如果是通过jsp运行bean,则int结果返回为 0
    因为查询的结果在bean中就即为 0 了
    所以不是显示的问题
    改为查询access数据库,完全是正常的
    所以说明程序看起来是没有问题的
    为什么就在查询SQL是出问题呢?
      

  3.   

    ------------jsp-----------------
    <%@ 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();
    %>
    .......
      

  4.   

    欢迎加入JAVA QQ群 9852769
      

  5.   

    ---------------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());

    start.setDate(start.getDate()+7);
    end.setDate(end.getDate()+7);
      }
    return year_week;
      }
    ...........
    }
      

  6.   

    是不是你的bean没得到数据,只是一个初始话的直。或者状态没保持住。
     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
      

  7.   

    Exception:com.microsoft.jdbc.sqlserver.SQLServerDriver
    用ms的jdbc时是出现了异常,就是惟独出现在jsp中jtds好象还是要设置的吧
    找不到class中