0 0

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

这是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;
	}
}


然后我在JSP页面是这样做的:
<%@ page import = "sqlpackage.*" %>

<%
	getNewsId getnewid = new getNewsId();
	long newId = getnewid.getId();
	out.print(newId);
%>


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

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

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

问题补充:
liguangwen 写道
pStatement = con.prepareStatement(strSql);
如果15行是这句的话说明 con 为null


while (res.next()) { 
如果15行是这句的话  res为null


汗,关键是怎么回事啊?如果为空的话为什么我单独建个类,也按照同样的声明该类的代码,却可以在终端调试出来?

问题补充:这是建立管理和关闭连接的类

package sqlpackage;

import java.sql.*;

public class oracle {
	private static final String sqlJar = "oracle.jdbc.OracleDriver";
	private static final String sqlUrl = "jdbc:oracle:thin:@192.168.1.153:1521:orcl";
	private static final String sqlUser = "sys as SYSDBA";
	private static final String sqlPass = "2012";
	
	/**
	 * 建立连接
	 * @return
	 * Connection
	 */
	public static Connection getCon() {
		Connection con = null;
		try {
			Class.forName(sqlJar);
			con = DriverManager.getConnection(sqlUrl,sqlUser,sqlPass);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return con;
	}

问题补充:
yanq12 写道
引用
con = oracle.getCon();  

这个没有获取到con还 NULL 所以就报错了


我把oracle类的方法贴出来了,怎么会没获取到呢?

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

我已经把相关的方法贴出来了,麻烦帮我看看。

问题补充:
kendylxy 写道
看看这个方法有没有异常
public static Connection getCon() {  
        Connection con = null;  
        try {  
            Class.forName(sqlJar);  
            con = DriverManager.getConnection(sqlUrl,sqlUser,sqlPass);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return con;  
    }  


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


我在oracle建了一个main方法,然后填写如下代码:
public static void main(String args[]) {
		Connection con = null;
		con = oracle.getCon();
	}

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

麻烦再帮忙看一下!!!
2011年11月23日 11:27

6个答案 按时间排序 按投票排序

0 0

采纳的答案

引用

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


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

2011年11月23日 12:37
0 0

看看这个方法有没有异常

public static Connection getCon() {  
        Connection con = null;  
        try {  
            Class.forName(sqlJar);  
            con = DriverManager.getConnection(sqlUrl,sqlUser,sqlPass);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return con;  
    }  


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

2011年11月23日 11:45
0 0

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

2011年11月23日 11:42
0 0

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

2011年11月23日 11:42
0 0

引用
con = oracle.getCon();  

这个没有获取到con还 NULL 所以就报错了

2011年11月23日 11:38
0 0

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


while (res.next()) { 
如果15行是这句的话  res为null

2011年11月23日 11:35

相关推荐

    jsp数据库连接大全和数据库操作封装到Javabean

    在JSP中,你可以通过实例化这个JavaBean,然后调用其方法来执行数据库操作,如: ```jsp DatabaseHelper dbHelper = new DatabaseHelper(); Connection conn = dbHelper.getConnection(); // 执行SQL查询 ...

    操作数据库的公共类 jar 包

    在Java和JSP开发中,数据库操作是必不可少的一部分。为了简化这一过程,开发者通常会使用预定义的类库,其中一个常见的就是"操作数据库的公共类 jar 包"。这个jar包提供了一组通用的数据库操作类,使得程序员可以...

    jsp实现数据库表格管理

    在这个项目中,我们利用JSP实现了对数据库表格的管理,包括增、删、改、查四大基本操作。下面我们将深入探讨这一主题。 1. **JSP基础** JSP文件由HTML结构和Java代码片段组成。当用户请求JSP页面时,服务器会将JSP...

    纯jsp的数据库增删改查

    然而,在实际开发中,由于维护成本高和代码复用性差,通常会使用MVC框架(如Spring MVC)配合DAO(Data Access Object)模式来处理数据库操作,这样能提高开发效率,降低出错率。 总的来说,纯jsp进行数据库操作...

    java实现oracle数据库备份.pdf

    ### Java 实现 Oracle 数据库备份的关键知识点 #### 一、Oracle数据库备份的重要性 数据库作为企业信息系统的基石之一,其安全性和稳定性至关重要。由于系统故障、人为误操作或硬件损坏等原因,可能会导致数据丢失...

    JSP编写的注册页面

    在后端,JSP页面可以调用JavaBean的相应方法来处理这些请求并返回数据。 总的来说,这个“JSP编写的注册页面”项目涉及到前端交互设计、后端数据处理、数据库操作以及用户输入验证等多个方面,是学习和实践JSP开发...

    DBUtils(通用的数据库工具类)

    DBUtils是Apache软件基金会开发的一个开源Java库,它提供了一套简单、易用且高度封装的数据库操作API,主要用于简化Java应用程序对数据库的访问。DBUtils的核心思想是为数据库操作提供一个安全、高效的抽象层,使得...

    使用JSP来操作SQL SERVER中存储过程.doc

    在`selectUserInfo()`方法中,使用`CallableStatement`对象来调用`selectUserInfo`存储过程,并返回结果集`ResultSet`,以便在JSP页面上展示数据。 ```java public ResultSet selectUserInfo() throws SQLException...

    java jsp通过jdbc连oracle 完整版

    在JSP中,这些步骤通常封装在JavaBeans(也称为Servlets)中,JSP页面通过EL(Expression Language)或JSTL(JavaServer Pages Standard Tag Library)调用这些方法。例如,创建一个名为`OracleConnectionBean.java`...

    jsp+servlet 实现插入信息

    在`jsp`中,我们可以定义变量、执行逻辑判断、调用Java方法等,使得网页具有更强的交互性和动态性。 其次,`servlet`是Java EE规范的一部分,它是一个Java类,用于扩展服务器的功能。在Web应用中,`servlet`通常...

    如何用jsp连接Access数据库.docx

    在这个例子中,`DBConnAccess`类负责建立和关闭数据库连接,而JSP页面仅负责调用这些方法和处理结果集。 总结,使用JSP连接Access数据库涉及到以下关键知识点: 1. **JDBC驱动**:`sun.jdbc.odbc.JdbcOdbcDriver`...

    JSP基础 课程知识点总结论文

    开发者可以使用`&lt;sql&gt;`标签直接在JSP中执行SQL语句,或者通过Java代码调用PreparedStatement和ResultSet等类进行数据库操作。 **1.8 JSP中的文件操作** JSP可以使用Java的I/O流API进行文件操作,如读取、写入和复制...

    使用java web 在jsp文件及Class中连接MySQL和SQLsever 的驱动方法

    在Java类中建立数据库连接与在JSP页面中类似,但是通常的做法是将数据库操作代码放在Java类中,然后在JSP页面中调用这些Java类的功能。这有助于遵循MVC(模型-视图-控制器)设计模式,保持代码的清晰和可维护性。...

    JSP写的增删改查

    在JSP页面中,开发者通常会使用内置动作(JSP tags)如`&lt;jsp:useBean&gt;`、`&lt;jsp:setProperty&gt;`、`&lt;jsp:getProperty&gt;`以及EL(Expression Language)表达式来与后台JavaBean对象交互,传递用户输入的数据,调用Bean的...

    struts 基本原理和添加数据库

    3. **Hibernate**:Hibernate是一个强大的ORM(Object-Relational Mapping)框架,它可以将Java对象与数据库表进行映射,使得数据库操作更加面向对象。在Struts中,可以创建一个HibernateUtil工具类,提供数据库连接...

    根据数据库快速生成 dao - entity - service - controller - jsp 代码

    这些类通常包括查询、插入、更新和删除等方法,使得数据库操作更加规范和便捷。 2. **Entity层**:Entity层代表了应用中的业务实体,通常与数据库表一一对应。开发者可以基于数据库表结构自动生成实体类,包含属性...

    jsp中调用存储过程的方法

    这个例子中的"jsp调用存储过程"项目可能包含了实现上述步骤的示例代码,可以下载并参考学习,以更好地理解JSP调用存储过程的实践操作。通过实践,你可以更好地掌握这个技术,提高在实际项目中的应用能力。

Global site tag (gtag.js) - Google Analytics