首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

连接数据库时的奇怪有关问题(myeclipse+struts+sqlserver)

2013-09-11 
连接数据库时的奇怪问题(myeclipse+struts+sqlserver)我写了一个数据库操作类在用.jsp中的useBean方法调用

连接数据库时的奇怪问题(myeclipse+struts+sqlserver)
我写了一个数据库操作类在用.jsp   中的useBean方法调用做测试时总是提示错误。

description   The   server   encountered   an   internal   error   ()   that   prevented   it   from   fulfilling   this   request.

exception  

org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root   cause  

java.lang.NullPointerException
com.is.struts.action.Database.selectDb(Database.java:57)
org.apache.jsp.index_jsp._jspService(index_jsp.java:103)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note   The   full   stack   trace   of   the   root   cause   is   available   in   the   Apache   Tomcat/5.0.28   logs.

数据库的源码如下,请高手支招:
package   com.is.struts.action;

import   java.sql.*;
//import   javax.swing.*;
//import   java.util.*;

import   java.sql.Connection;
import   java.sql.DriverManager;
import   java.sql.ResultSet;
import   java.sql.SQLException;
import   java.sql.Statement;

public   class   Database   {
Connection   conn=null;
Statement   stmt=null;
ResultSet   rs=null;
String   driverName=null;
String   url=null;
/*
public   Database()   {
    try   {
        jbInit();
    }
    catch   (Exception   ex)   {
        ex.printStackTrace();
    }
}

private   void   jbInit()   throws   Exception   {
}
*/
//连接数据库
public     void     setConnection(){//   throws   Exception{

        try   {
        driverName   =   "com.microsoft.jdbc.sqlserver.SQLServerDriver ";
                url   =   "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test ";
                Class.forName(driverName);
                conn=DriverManager.getConnection(url,   "sa ",   "yt ");
                conn.setAutoCommit(true);
        }
        catch   (ClassNotFoundException   ex)   {
            ex.printStackTrace();
        }
        catch(SQLException   e){
        e.printStackTrace();
        }
}

//数据库查询的操作
public   ResultSet   selectDb(String   sql){//   throws   Exception{



    try
    {
        //PreparedStatement   stmt   =   conn.prepareStatement(sql,java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
        //rs=stmt.executeQuery();
  return   stmt.executeQuery(sql);

    }catch(SQLException   e)
    {
        e.printStackTrace();
        //JOptionPane.showMessageDialog(null, "数据库操作失败!2 ", "警告 ",JOptionPane.WARNING_MESSAGE);
    }
    catch(NullPointerException   ex){
    ex.printStackTrace();
    }
    return   null;
}


//关闭数据集
public   void   closeRs(){
    try
    {
        if   (rs!=null)   {   rs.close();   }
        if(stmt!=null)   {stmt.close();}
    }catch(SQLException   e)
      {
        e.printStackTrace();
      }
}

//关闭数据库
public   void   closeDb(){

    try
    {
        if(conn!=null)   {   conn.close();}
    }catch(SQLException   e)
      {
        e.printStackTrace();
      }
}

}


在调用setConnection时没问题,调用selectDb时就出错。

[解决办法]
java.lang.NullPointerException
搞了老半天,你return的还是null啊
public ResultSet selectDb(String sql){// throws Exception{

try
{
//PreparedStatement stmt = conn.prepareStatement(sql,java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
//rs=stmt.executeQuery();
return stmt.executeQuery(sql);

}catch(SQLException e)
{
e.printStackTrace();
//JOptionPane.showMessageDialog(null, "数据库操作失败!2 ", "警告 ",JOptionPane.WARNING_MESSAGE);
}
catch(NullPointerException ex){
ex.printStackTrace();
}
return null;//这行你写了白做了,return的还是null
}
程序代码可以改成:
public ResultSet selectDb(String sql){// throws Exception{

try
{
//PreparedStatement stmt = conn.prepareStatement(sql,java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
//rs=stmt.executeQuery();
return stmt.executeQuery(sql);

}catch(SQLException e)
{
e.printStackTrace();
//JOptionPane.showMessageDialog(null, "数据库操作失败!2 ", "警告 ",JOptionPane.WARNING_MESSAGE);
return null;
}
catch(NullPointerException ex){
ex.printStackTrace();
return null;
}

}
在使用的时候最好判断一下null可能出现的解决办法
我的异常网推荐解决方案:The server encountered an internal error () that prevented it from fulfilling this request.,http://www.myexception.cn/java-web/317.html

热点排行