[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了一上午也没找到解决办法。
[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