javabean代码:package student;
import java.sql.*;public class conn{
String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr="jdbc:odbc:student";
Connection connect=null;
ResultSet rs=null;
public conn(){
try{
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e){
System.err.println(e.getMessage());
}
}
public ResultSet executeQuery(String sql){
try{
connect=DriverManager.getConnection(sConnStr);
Statement stmt=connect.createStatement();
rs=stmt.executeQuery(sql);
}
catch(SQLException ex){
System.err.println(ex.getMessage());
}
return rs;
}
}访问javabean的jsp源文件代码:
<%@page contentType="text/html;charset=GBK"%>
<%@page language="java" import="java.sql.*"%>
<jsp:useBean id="connDbBean" scope="page" class="student.conn"/>
<html>
<head><title>test db connect</title></head>
<body bgcolor="#FFFFFF">
<div align="center">
<table width="60%" border="1">
<tr bgcolor="#CCCCFF">
<td width="50%">
<div align="center"><font color="#FF0033"><b>姓名</b></font></div>
</td>
<td width="25%">
<div align="center"><font color="#FF0033"><b>性别</b></font></div>
</td>
<td width="25%">
<div align="center"><font color="#FF0033"><b>分数</b></font></div>
</td>
</tr>
<%
ResultSet RS_result=connDbBean.executeQuery("select * from table1");
String studentName="";
String studentSex="";
int studentScore=0;
while(RS_result.next()){
studentName=RS_result.getString("name");
studentSex=RS_result.getString("sex");
studentScore=RS_result.getInt("score");
%>
<tr>
<td width="50%" bgcolor="#FFFFFF">
<div align="center"><%=studentName%></div>
</td>
<td width="25%" bgcolor="#FFFFFF">
<div align="center"><%=studentSex%></div>
</td>
<td width="25%" bgcolor="#FFFFFF">
<div align="center"><%=studentScore%></div>
</td>
</tr>
<%
}
RS_result.close();
%>
</table>
</div>
</body>
</html>在浏览器中输入http://localhost:8080/myjsp/conn_db.jsp出现如下错误信息:(myjsp为tomcat的虚拟目录)type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.NullPointerException
org.apache.jsp.conn_005fdb_jsp._jspService(conn_005fdb_jsp.java:75)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.大虾请帮帮忙看看怎么回事啊?我已经运行了好几个jsp调用javabean都没出问题啊,怎么就这个有问题?
import java.sql.*;public class conn{
String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr="jdbc:odbc:student";
Connection connect=null;
ResultSet rs=null;
public conn(){
try{
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e){
System.err.println(e.getMessage());
}
}
public ResultSet executeQuery(String sql){
try{
connect=DriverManager.getConnection(sConnStr);
Statement stmt=connect.createStatement();
rs=stmt.executeQuery(sql);
}
catch(SQLException ex){
System.err.println(ex.getMessage());
}
return rs;
}
}访问javabean的jsp源文件代码:
<%@page contentType="text/html;charset=GBK"%>
<%@page language="java" import="java.sql.*"%>
<jsp:useBean id="connDbBean" scope="page" class="student.conn"/>
<html>
<head><title>test db connect</title></head>
<body bgcolor="#FFFFFF">
<div align="center">
<table width="60%" border="1">
<tr bgcolor="#CCCCFF">
<td width="50%">
<div align="center"><font color="#FF0033"><b>姓名</b></font></div>
</td>
<td width="25%">
<div align="center"><font color="#FF0033"><b>性别</b></font></div>
</td>
<td width="25%">
<div align="center"><font color="#FF0033"><b>分数</b></font></div>
</td>
</tr>
<%
ResultSet RS_result=connDbBean.executeQuery("select * from table1");
String studentName="";
String studentSex="";
int studentScore=0;
while(RS_result.next()){
studentName=RS_result.getString("name");
studentSex=RS_result.getString("sex");
studentScore=RS_result.getInt("score");
%>
<tr>
<td width="50%" bgcolor="#FFFFFF">
<div align="center"><%=studentName%></div>
</td>
<td width="25%" bgcolor="#FFFFFF">
<div align="center"><%=studentSex%></div>
</td>
<td width="25%" bgcolor="#FFFFFF">
<div align="center"><%=studentScore%></div>
</td>
</tr>
<%
}
RS_result.close();
%>
</table>
</div>
</body>
</html>在浏览器中输入http://localhost:8080/myjsp/conn_db.jsp出现如下错误信息:(myjsp为tomcat的虚拟目录)type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.NullPointerException
org.apache.jsp.conn_005fdb_jsp._jspService(conn_005fdb_jsp.java:75)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.大虾请帮帮忙看看怎么回事啊?我已经运行了好几个jsp调用javabean都没出问题啊,怎么就这个有问题?
确认一下数据库有没有数据.或者字段都有值.
输出一下下面的变量是不是有值.
studentName=RS_result.getString("name");
studentSex=RS_result.getString("sex");
studentScore=RS_result.getInt("score");
list.getResult() 就是取这个结果集
list.getResult().getString(2),取该结果集 当前记录行的 第 2 列的String 类型的值。访问结果集的数据,先进行定位。用 next();或其他方法定位到对应的行,才能 进行读取当前的数据。 数据库查询的返回后的结果集,其访问指针,指向第一行的前面,即,需要 next(),才能把指针指向第一行,这样才能取值。如果直接访问的话,这个时候,“指针”正指向结果集的前面,当然会出现 空值 的错误提醒,因为这个时候的指针是没有意义的,只有下移后,指向第一行才有意义。
studentName=RS_result.getString(1);
studentSex=RS_result.getString(2);
studentScore=RS_result.getInt(3);
还是一样的错误提示。
数据库应该没有错,我编了个java程序对数据库进行读取和插入都能正常运行啊
数据源建好了,表结构很简单:
name text
sex text
score number
这里面不要数据源的用户和密码吗?
connect=DriverManager.getConnection(sConnStr,?,?);
while(RS_result.next())
原来是odbc数据源除了问题,原来是系统dsn不是用户dsn。
有谁能告诉我是为什么吗?