JB内容:
setMemberID()— 对BuyerBean中的memberID属性进行赋值;
setPwd()—对BuyerBean中的 pwd 属性进行赋值;
getLogontimes()— 获取该会员登录的次数。------只有此步连接数据库!!JSP内容:
<jsp:useBean class="zio.BuyerBean" id="buyer" scope="page"></jsp:useBean>
......中间省略.....
<% String memberID = request.getParameter("ID");----成功
String pwd = request.getParameter("pwd");--------成功
buyer.setMemberID("memberID");-------------------成功
buyer.setPwd("123");-----------------------------成功
         int logonTimes = buyer.getLogontimes();%>--------错误!!问题是在JB中,用main方法测试一切正常,
但通过jsp访问JB就无法连接数据库。请问如何解决?ps:数据库为Access,测试时只开了tomcat,是不是还需要别的配置才能访问数据库?

解决方案 »

  1.   

    没有出错
    但就是用同样的数据在JSP下访问数据库和在JB内用main访问数据库结果不一样。比如JB内结果是 存在用户
    但JSP下访问结果是 没有
      

  2.   

    /* *BuyerBean.Java  
    *本Bean中有两个set方法和两个get 方法:
    *setMemberID()— 对BuyerBean中的memberID属性进行赋值;
    *setPwd()—对BuyerBean中的 pwd 属性进行赋值;
    *getLogontimes()— 获取该会员登录的次数。
    *getMenberName()获得该会员的真实姓名,用于显示欢迎信息。
    *main()方法用于将BEAN作为一个 Application进行测试时使用,正式发布时可以删除。
    **/package zio;import java.sql.*;public class BuyerBean {
    private String memberID = null ;     //会员ID
    private String memberName = null;   //会员姓名
    private String pwd = null; //密码
    private int logontimes = -1; //登录的次数
    private static String strDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";  //JDBC驱动
    private static String strDBUrl = "jdbc:odbc:My_Book";   //数据源 ,
    private Connection conn =null;             //连接
    private ResultSet rs = null; //结果集

    // 加载JDBC-ODBC驱动
    public BuyerBean(){ try {
    Class.forName(strDBDriver );
    }
    //捕获异常
    catch(java.lang.ClassNotFoundException e){
    System.err.println("BuyerBean():" + e.getMessage());
    } }

    // 获得登录次数,登录的会员的名字也在该方法调用时获得
    public int getLogontimes(){

    String strSQL=null;

    try{
    conn = DriverManager.getConnection(strDBUrl);
    // System.out.println("connection ok");
    Statement stmt = conn.createStatement();
    // System.out.println("statement ok");
    strSQL= "SELECT logon,name FROM buyinfo WHERE ID = '"+ 
    memberID + "' AND pwd = '" + pwd + "'";
    rs = stmt.executeQuery(strSQL);
    // System.out.println(strSQL+"ok");

    while (rs.next()){
    // 登录的次数

    logontimes=rs.getInt("logon");
    //会员姓名
    memberName=rs.getString("name"); 

    }
    rs.close();
    //如果是合法会员则将其登录次数加1
    if (logontimes !=-1) {
    strSQL = "UPDATE buyinfo SET " +
    "logon=logon +1 WHERE ID = '"+ memberID + "'";
    stmt.executeUpdate(strSQL);
    // System.out.println("UP OK"+strSQL);
    }
    stmt.close();
    conn.close();

    }
    //捕获异常
    catch(SQLException e){
    System.err.println("BuyerBean.getLogontimes()2:" + e.getMessage());
    }
    return logontimes ;




    }


    public void setMemberID(String MenID){
    this.memberID=MenID;

    }


    public void setPwd(String PWD){
    this.pwd=PWD; }

    public String getMenberName(){
    return memberName;

    }

    public String getID(){
    return memberID;
    }

    public String getpwd(){
    return pwd;
    }

    public static void main(String arg[]){
    BuyerBean BB=new BuyerBean();
    BB.setMemberID("wow");
    BB.setPwd("123");
    System.out.println(BB.getLogontimes());
    System.out.println(BB.getMenberName());

    }
    }有点长
      

  3.   

    有点长
    其中有很多没有用的函数,是我自己测试时用的
    除了main里的System.out.println,其他函数中的System.out.println都不执行
      

  4.   

    这个是JSP的代码:
    <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0 Transitional//EN"><%@ page language="java" contentType="text/html;charset=GB2312"%><jsp:useBean class="zio.BuyerBean" id="buyer" scope="page"></jsp:useBean>
    <HTML>
    <HEAD>
    <META name="CHECKLOGON" >
    <TITLE>
    ZIO ON LINE BOOK STORE - MEMBER LOGIN
    </TITLE>
    </HEAD>
    <BODY BGCOLOR="#FFFFFF">
    <H1 align=”"center">ZIO 网上书店</H1>
    <%
    String memberID = request.getParameter("ID");
    String pwd = request.getParameter("pwd");
    buyer.setMemberID("wow");
    buyer.setPwd("123");
    %> 
    <% int logonTimes = buyer.getLogontimes();%>
    <%String mn=buyer.getMenberName();%>
    <%=memberID%>
    <%=pwd%>
    <%=buyer.getID() %>
    <%=buyer.getpwd() %>
    <%=logonTimes%>
    <%=mn%>
       
    </BODY>
    </HTML>


      

  5.   

    你把Class.forName()语句放在getLogontimes()方法里试试吧
      

  6.   

    可能是我的连接问题,我做了个刚简单的测试JSP:<%@ page language="java" contentType="text/html;charset=GB2312"%>
    <%@ page import="java.sql.*"%> 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <% 
     String memberName = null;   
     int logontimes = -1;             
     ResultSet rs = null;
     try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    }
    catch(java.lang.ClassNotFoundException e){
    System.err.println(e.getMessage());
    } ;
    try{
    Connection conn = DriverManager.getConnection("jdbc:odbc:My_Book");
    Statement stmt = conn.createStatement();
    String strSQL= "SELECT logon,name FROM buyinfo WHERE ID = 'wow' AND pwd = '123'";
    rs = stmt.executeQuery(strSQL);

    while (rs.next()){
    logontimes=rs.getInt("logon");
    memberName=rs.getString("name"); 
    }  

    stmt.close();
    conn.close();

    }
    //捕获异常
    catch(SQLException e){
    System.err.println( e.getMessage());
    }
    %>
    Logon:
    <%=logontimes%>
    Name:
    <%=memberName %></body>
    </html>输出结果应该是Logon: 11 Name: wow 
    但实际上输出却是 Logon: -1 Name: null 请问这是什么地方出的问题?
      

  7.   

    补充一下
    我的环境是:Tomcat6.0 数据库是Access
      

  8.   

    SELECT logon,name FROM buyinfo WHERE ID = 'wow' AND pwd = '123'以上的SQL语句直接执行可以得到输出结果吗?