可以用System.out.println 大法,定位在那里出的异常···就好解决了

解决方案 »

  1.   

    我又重新写了一个BEAN,如下:package dc;
    import java.sql.*;public class VoteBean{
    private Connection con=null;
    private Statement stmt=null;
    private ResultSet BookRs=null;

    public  VoteBean(){
    BuildConnection();
    }

    public void BuildConnection(){
    try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    con=DriverManager.getConnection("jdbc:odbc:test");
    }
    catch(Exception ex){
    System.out.print(ex.toString());
    }
    }

    public Connection getConnection(){
    if(con==null)
    BuildConnection();
    return this.con;
    }

    public void InitBookRs(Connection con)
    {
    try{
    this.con=con;
    stmt=this.con.createStatement(
    ResultSet.TYPE_SCROLL_SENSITIVE,
    ResultSet.CONCUR_READ_ONLY);
    BookRs=stmt.executeQuery("select * from uin");
    }
    catch(SQLException sex){
    System.out.println(sex.toString());
    }
    }

    public void CloseBookRs(){
    try{
    if(BookRs!=null){
    BookRs.close();
    BookRs=null;
    }
    if(stmt!=null){
    stmt.close();
    stmt=null;
    }
    }
    catch(SQLException sex){
    System.out.println(sex.toString());
    }
    }

    public boolean next(){
    boolean result=false;
    try{
    result=BookRs.next();
    }
    catch(SQLException sex){
    System.out.println(sex.toString());
    }
    return result;
    }

    public boolean login(Connection con,String un,String pw){
    boolean result=false;
    String sql="select * from uin where un='"+un+"' and pw='"+pw+"'";

    try{
    this.con=con;
    Statement lstmt=null;
    lstmt=this.con.createStatement(
    ResultSet.TYPE_SCROLL_INSENSITIVE,
    ResultSet.CONCUR_READ_ONLY);

    ResultSet rs=lstmt.executeQuery(sql);
    result=rs.next();
    rs.close();
    lstmt.close();
    }
    catch(SQLException sex){
    System.out.println(sex.toString());
    }
    return result;
    }

    }这个BEAN编译没有问题,但是怀疑就是这出错了!!我用如下代码在JSP中测试
    <%
    try{
    vote.InitBookRs(vote.getConnection());
    }
    catch(Exception e){
    out.println(e);
    }
    %>
    抛出异常和原来一样
    java.lang.NullPointerException 
    我的数据库没有问题,测试代码页不应该有什么问题!!
    就是BEAN的问题,但实在看不出那里出错了!!!
    请大虾指教!!!!!!!!!!!!!
      

  2.   

    一,测试数据库是否连接成功;
    二,测试rs是否为null
      

  3.   


    我用如下代码测试数据源连接成功,但是rs怎么测试????
    import java.sql.*;
    class Test
    {
    public static void main(String args[])
    {
    String l="jdbc:odbc:test";
    try
    {
    try
    {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    }
    catch(java.lang.ClassNotFoundException e)
    {
    System.err.print("ClassNotFoundException:");
    System.err.println(e.getMessage());
    }
    Connection con=DriverManager.getConnection(l);
    Statement stmt=con.createStatement();
                ResultSet rs=stmt.executeQuery("Select * from uin");
    while(rs.next())
    {
    System.out.print(rs.getString("age"));
    System.out.println(" ");
    }
    con.close();
    }
    catch(SQLException ex)
    {
    System.out.println(ex);
    }
    }
    }
      

  4.   

    private String info;if(rs==null)
       info="rs为空";
    else
       info="rs不为空";
       .....再用一个方法返回info,再显示出来就可以了.
      

  5.   

    数据库是否连接上可以直接在JSP中用
    Connection con=vote.getConnection();
    if(con.isClosed())
    {
    out.print("没有连接上数据库");
    }else{
    out.print("连接上了数据库");
    }
      

  6.   

    终于解决了!!!!!!!!!!!!!!!!!!!!!!
    我又编了一个bean,在原来的基础上简化了!!
    总算成功了!!!
    谢谢各位大虾指点!!!
      

  7.   

    bean如下:我只是实现了在bean中解决登陆的问题,虽然是一小步,但对于我来说,使自信心又一步加强了。package dc;
    import java.sql.*;public class ft{
    private Connection con=null;
    private Statement stmt=null;
    private ResultSet BookRs=null;

    public  ft(){
    BuildConnection();
    }

    public void BuildConnection(){
    try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    con=DriverManager.getConnection("jdbc:odbc:te");
    }
    catch(Exception ex){
    System.out.print(ex.toString());
    }
    }

    public Connection getConnection(){
    if(con==null)
    BuildConnection();
    return this.con;
    }

    public boolean login(Connection con,String un,String pw){
    boolean result=false;
    String sql="select * from uin where un='"+un+"' and pw='"+pw+"'";

    try{
    this.con=con;
    Statement lstmt=null;
    lstmt=this.con.createStatement(
    ResultSet.TYPE_SCROLL_INSENSITIVE,
    ResultSet.CONCUR_READ_ONLY);

    ResultSet rs=lstmt.executeQuery(sql);
    result=rs.next();
    rs.close();
    lstmt.close();
    }
    catch(SQLException sex){
    System.out.println(sex.toString());
    }
    return result;
    }

    }