在JSP页面调用JAVA类里的数据库操作方法出错?

[b]这是JAVA的类的代码:[/b]
[code="java"]
package sqlpackage;
import java.sql.*;
public class getNewsId {

public long getId() {
    Connection con = null;
    PreparedStatement pStatement = null;
    String strSql = "select myseq.nextval from dual";
    ResultSet res = null;
    long id = 0;
    try {
        con = oracle.getCon();
        pStatement = con.prepareStatement(strSql);
        res = pStatement.executeQuery();
        while (res.next()) {
            id = res.getLong(1);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        oracle.closeRes(res);
        oracle.closeStatement(pStatement);
        oracle.closeCon(con);
    }
    return id;
}

}
[/code]

[b]然后我在JSP页面是这样做的:[/b]
[code="java"]<%@ page import = "sqlpackage.*" %>[/code]
[code="java"]<%
getNewsId getnewid = new getNewsId();
long newId = getnewid.getId();
out.print(newId);
%>[/code]

发送到Tomcat去调试的时候,提示出错信息如下:

java.lang.NullPointerException
sqlpackage.getNewsId.getId(getNewsId.java:15)
上面的内容,我看了一下,是在第15行的这一句:pStatement = con.prepareStatement(strSql);

请问一下各位老师是什么问题?因为我直接调试这个类,是可以获取ID,并向数据库中写记录的,现在头疼的就是,在JSP文件里调用数据库查询、更新、删除、插入几个类(自己写的)都是这种问题,所以觉得肯定什么地方没弄对,GOOGLE了一上午也没找到解决办法。

6个回答

[quote]
正常编译通过,内容如下:
oracle.jdbc.driver.T4CConnection@705b40
[/quote]

你用main执行可以,所有有jar包,你在tomcat中用在lib下面放了oracle 的驱动jar包了吗?

pStatement = con.prepareStatement(strSql);
如果15行是这句的话说明 con 为null

while (res.next()) {

如果15行是这句的话 res为null

[quote]con = oracle.getCon(); [/quote]
这个没有获取到con还 NULL 所以就报错了

从异常来看,未获得到数据库连接也就是说con = oracle.getCon();这句话获取的con是空,请检查oracle.getCon();方法能否获得数据库连接。

到底是那句报的错呢?那个为null,然后把获得null的方法给或者对象那段代码贴出来,这样好查看问题

看看这个方法有没有异常
[code="java"]public static Connection getCon() {

Connection con = null;

try {

Class.forName(sqlJar);

con = DriverManager.getConnection(sqlUrl,sqlUser,sqlPass);

} catch (Exception e) {

e.printStackTrace();

}

return con;

} [/code]

打一下获取到的con看看,System.out.println(con); 或者加断点debug

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问