jsp连接access出错的问题--囧

来源:百度知道 编辑:UC知道 时间:2024/05/22 16:38:31
我用的是个bean来连接:
faq_access:

package com;
import java.sql.*;

public class faq_access
{
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
public faq_access()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:faq_access","","");
stmt=con.createStatement();
}
catch(Exception e)
{}
}

public ResultSet execute(String sql)
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:faq_access","","");
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
}
catch(Exception e)
{}
return rs;
}
}

然后是个jsp:
<%@ page contentType="text/html; charse

我看了一会,也觉得有点奇怪,但你看看,你的Bean里的构造方法
public faq_access()里就加载了驱动(connection、Statement),但在你的execute方法里为何又写一遍呢,写Bean不就为了代码的重用么?很有可能是这里错了,你把execute方法里的这三句去掉!
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:faq_access","","");
stmt=con.createStatement();

1. 错误一定在public ResultSet execute(String sql)这个METHOD里
原因是while(rs.next()) 被thrown了一个NullPointerException说明rs是NULL, 那么15: ResultSet rs = faq_access.execute("select * from faq");
中.execute这个METHOD中一定有了EXCEPTION, 所以METHOD .execute会return null.

2.解决方法:
第一, 去掉class faq_access, 中的constructor, 多余的Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:faq_access","","");
stmt=con.createStatement(); 这些

第二, METHOD .execute改为:
public ResultSet execute(String sql)
{
try
{
Class.for