首先,你处理异常的方法不是很好,出现异常了,方法内部自己消化了,外部程序根本不知道发生了什么事。一般来说,当发生异常的时候,要么自己处理,要么通知外部程序,外部程序自己做出反映。你的程序肯定是在这段代码中出现问题:
out.print(ReadData.geterrorMessage());
//链接数据库
ReadData.ExecuteSql();
//显示数据
while(ReadData.sqlRst.next())估计是 ReadData.sqlRst==null
为什么会是null呢?可能是 1 、“public ConnectData() //链接数据库“出现问题了,但是我们不知道,因为异常被内部消化了;2、“public void ExecuteSql() “出现问题了,我们也不知道,原因同上;3、award表是空的,sqlRst本来就是null.
我建议你修改你的ConnectData,观察抛出来的异常。
out.print(ReadData.geterrorMessage());
//链接数据库
ReadData.ExecuteSql();
//显示数据
while(ReadData.sqlRst.next())估计是 ReadData.sqlRst==null
为什么会是null呢?可能是 1 、“public ConnectData() //链接数据库“出现问题了,但是我们不知道,因为异常被内部消化了;2、“public void ExecuteSql() “出现问题了,我们也不知道,原因同上;3、award表是空的,sqlRst本来就是null.
我建议你修改你的ConnectData,观察抛出来的异常。
org.apache.jsp.ConnectData_jsp._jspService(ConnectData_jsp.java:86)
..............你把JSP翻译的java文件看看你就应该可以大致明白了,具体的编译后的servlet放在什么地方主要看你使用的是什么IDE后面86是你出错行数
并 在函数 声明 throws exception
各位兄弟帮帮忙呀。
着急......
我再发一次,你看看:
***************************************************************************************
package Datainfo;import java.sql.*;
import java.lang.*;public class ConnectData
{
//变量声明
Connection sqlCon; //数据库连接对象
Statement sqlStmt; //SQL语句对象
ResultSet sqlRst; //结果集对象
String strCon; //数据库连接字符串
//String strSQL; //SQL语句
//String Result; //返回结果/*********************************************/
public String ConnectionData()
{
try
{//装载JDBC-ODBC驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//设置数据库连接字符串
strCon = "jdbc:odbc:db1";
//连接数据库
sqlCon = java.sql.DriverManager.getConnection(strCon,"","");
//创建SQL语句对象
sqlStmt = sqlCon.createStatement();
}
catch(Exception E)
{
System.err.println(E.getMessage());
}
return "This is ConnectionData()!";
}/*********************************************/
public ResultSet executeSql(String SQL)
{
try
{
ResultSet rs=null;
//执行SQL语句并取得结果集
rs=sqlStmt.executeQuery(SQL);
return rs;
}
catch(Exception E)
{
System.err.println(E.getMessage());
return null;
}
}/*********************************************/
public String CloseData()
{
try
{
//关闭结果集
sqlRst.close();
//关闭SQL语句对象
sqlStmt.close();
//关闭数据库
sqlCon.close();
}
catch(Exception E)
{
System.err.println(E.getMessage());
return null;
}
return "This is CloseData()!";
}
}
***************************************************************************************
<%@page contentType="text/html;charset=gb2312"%><%@page import="java.util.*"%>
<%@page import="java.sql.*"%>
<%@page import="java.lang.*"%><%//变量声明
ResultSet Result; //结果集对象
String SQL; //持执行的SQL语句
%><jsp:useBean id="ReadData" class="Datainfo.ConnectData" scope="page"/><html>
<body>
<%
SQL="select * from award";
//链接数据库
out.print(ReadData.ConnectionData()); out.print("<br>");
//读取数据
Result=ReadData.executeSql(SQL);
//out.print(ReadData.executeSql(SQL));
out.print("<br>");
out.print("<table>");
out.print("<tr>");
out.print("<td width=100>"); out.print("编号"); out.print("</td>");
out.print("<td width=100>"); out.print("部门"); out.print("</td>");
out.print("<td width=100>"); out.print("岗位"); out.print("</td>");
out.print("<tr>"); while(Result.next())
{
out.print("<tr>");
out.print("<td width=100>"); out.print(Result.getString(1)); out.print("</td>");
out.print("<td width=100>"); out.print(Result.getString(1)); out.print("</td>");
out.print("<td width=100>"); out.print(Result.getString(1)); out.print("</td>");
out.print("<tr>");
}
out.print("</table>");
out.print(ReadData.CloseData());
%></body>
</html>
真要命,搞了好几天了。都没搞定。
分不够再加!
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: Datainfo.ConnectData.executeSql(Ljava/lang/String;)Ljava/sql/ResultSet;
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:867)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:800)
org.apache.jsp.ConnectData_jsp._jspService(ConnectData_jsp.java:94)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
root cause java.lang.NoSuchMethodError: Datainfo.ConnectData.executeSql(Ljava/lang/String;)Ljava/sql/ResultSet;
org.apache.jsp.ConnectData_jsp._jspService(ConnectData_jsp.java:65)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
note The full stack trace of the root cause is available in the Tomcat logs.
--------------------------------------------------------------------------------Apache Tomcat/5.0.16
public ConnectData()
{
try
{//装载JDBC-ODBC驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//设置数据库连接字符串
strCon = "jdbc:odbc:db1";
//连接数据库
sqlCon = java.sql.DriverManager.getConnection(strCon,"","");
//创建SQL语句对象
sqlStmt = sqlCon.createStatement();
}
catch(Exception E)
{
System.err.println(E.getMessage());
}
}
jsp文件中 out.print(ReadData.ConnectionData()); 去掉
getString(1); 分别取记录的话应该是getString(1); getString(2); getString(3); out.print(ReadData.CloseData());———>ReadData.CloseData();———>
<%@page import="java.sql.*"%>
<%@page import="java.lang.*"%><%//变量声明
ResultSet Result; //结果集对象
String SQL; //持执行的SQL语句
%><jsp:useBean id="ReadData" class="Datainfo.ConnectData" scope="page"/><html>
<body>
<%
SQL="select * from award";
//链接数据库
out.print("<br>");
//读取数据
Result=ReadData.executeSql(SQL);
//out.print(ReadData.executeSql(SQL));
out.print("<br>");
out.print("<table>");
out.print("<tr>");
out.print("<td width=100>"); out.print("编号"); out.print("</td>");
out.print("<td width=100>"); out.print("部门"); out.print("</td>");
out.print("<td width=100>"); out.print("岗位"); out.print("</td>");
out.print("<tr>"); while(Result.next())
{
out.print("<tr>");
out.print("<td width=100>"); out.print(Result.getString(1)); out.print("</td>");
out.print("<td width=100>"); out.print(Result.getString(2)); out.print("</td>");
out.print("<td width=100>"); out.print(Result.getString(3)); out.print("</td>");
out.print("<tr>");
}
out.print("</table>");
ReadData.CloseData();
%></body>
</html>
/*
* Created on 2005-2-18
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package test;import java.sql.*;public class ConnectData
{
//变量声明
Connection sqlCon = null; //数据库连接对象
Statement sqlStmt = null; //SQL语句对象
ResultSet sqlRst = null; //结果集对象
String strCon; //数据库连接字符串
//String strSQL; //SQL语句
//String Result; //返回结果/*********************************************/
public ConnectData()
{
try
{//装载JDBC-ODBC驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//设置数据库连接字符串
strCon = "jdbc:odbc:db1";
//连接数据库
sqlCon = java.sql.DriverManager.getConnection(strCon,"","");
//创建SQL语句对象
sqlStmt = sqlCon.createStatement();
}
catch(Exception E)
{
System.err.println(E.getMessage());
}
}/*********************************************/
public ResultSet executeSql(String SQL)
{
try
{
ResultSet rs=null;
//执行SQL语句并取得结果集
rs=sqlStmt.executeQuery(SQL);
return rs;
}
catch(Exception E)
{
System.err.println(E.getMessage());
return null;
}
}/*********************************************/
public String CloseData()
{
try
{
//关闭结果集
sqlRst.close();
//关闭SQL语句对象
sqlStmt.close();
//关闭数据库
sqlCon.close();
}
catch(Exception E)
{
System.err.println(E.getMessage());
return null;
}
return "This is CloseData()!";
}
}
ResultSet Result=(ResultSet)ReadData.executeSql(SQL);
System.out.print("出错标记");更详细的确认出错位置
再问你最后一个问题,然后给分。到底问题出在什么地方?
好像已经过时,用java驱动程序