请问如何再jsp里引用javabean里返回的resultset?
我写了一个javabean名字位db,里面有一个方法(名字为setcon )是传入一个sql语句参数,返回相应的resultset,我在jsp里这样调用out.print(db.setCon("select * from table1"));发现输出null,如果引用返回的resultset那么有空指针exception,请问如何再jsp里引用javabean里返回的resultset? 问题点数:20、回复次数:9Top
1 楼xexplorer(西风漂流)回复于 2002-02-04 14:40:03 得分 0
肯定是你的bean出问题了,可以直接引用传回的resultset的,你的bean里面应该是无法实现query操作,无法得到resultset所以传回的resultset是null,并且你要想读出数据也不能像前面那样操作,你要这样。
Resultset rs=db.setCon("select * from table1");
if (rs.next())
{
out.print(rs.getString("ID"));
}Top
2 楼xiaoluo(Aaron)回复于 2002-02-04 14:44:02 得分 0
我把源代码贴出来,老兄帮忙看看
javabean:
package date;
import oracle.jdbc.*;
import java.sql.*;
public class DataWebBean {
public ResultSet rs;
public ResultSet setConn(String sql){
try
{
Class.forName ("oracle.jdbc.driver.OracleDriver");
Connection conn =
DriverManager.getConnection ("jdbc:oracle:thin:@ eric:1521:eric" , "internal", "oracle");
Statement stmt = conn.createStatement();
sql="select * from eric.table1";
rs = stmt.executeQuery(sql);
System.out.println("Connection is Complete!!");
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
return rs;
}
}
jsp:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import=" java.sql.*" %>
<%@ page language="java"%>
<html>
<head>
<title>
DataWeb
</title>
</head>
<body>
<jsp:useBean id="DataWebBeanI" scope="page" class="date.DataWebBean" />
<%
ResultSet rs=DataWebBeanI.setConn("s");
try{
while (rs.next())
out.print(rs.getString(1));
}
catch(Exception e){
out.print(e);
}
%>
</body>
</html>
Top
3 楼xiaoluo(Aaron)回复于 2002-02-04 14:44:44 得分 0
报错,说空指针Top
4 楼xiaoluo(Aaron)回复于 2002-02-04 14:57:20 得分 0
抬Top
5 楼night_knight(黑夜骑士只抽红河)回复于 2002-02-04 15:47:00 得分 0
你这能通过编译吗?Top
6 楼night_knight(黑夜骑士只抽红河)回复于 2002-02-04 15:54:38 得分 0
把错误贴出来Top
7 楼bookbobby(书呆)回复于 2002-02-04 16:24:10 得分 20
用用我的这个bean看
//:dbHandle.java.
//存放位置 /%tomcat_home%/classes/testC/
//功能:用于查询指定数据库连接并且返回查询值
//要用于实际使用还必须重新定义其中的赋值部分
package testC; //打包
import java.sql.*;
public class dbHandle
{
String dbUrl=""; //用于设置/读取数据库连接对象
String dbUser="";//用于设置/读取数据库用户名
String dbPwd="";//用于设置/读取数据库使用密码
String dbSqlStr="";//用于设置/读取查询操作结果
String[] dbExecuteResult;
boolean insertResult=true;
ResultSet dbQueryRs=null;
//设置数据库连接
public void setDbUrl(String value)
{
dbUrl=value;
}
//设置数据库用户名
public void setDbUser(String value)
{
dbUser=value;
}
//设置数据库使用密码
public void setDbPwd(String value)
{
dbPwd=value;
}
//设置操作语句
public void setDbSqlStr(String value)
{
dbSqlStr=value;
}
public String getDbUrl() { return dbUrl; }
public String getDbUser() { return dbUser; }
public String getDbPwd() { return dbPwd; }
public String getDbSqlStr() { return dbSqlStr; }
//用于向 数据库中添加纪录
public boolean addNewRecord(String dbSqlStr)
{
try{
//数据库操作
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //装载数据库驱动
Connection conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd); //连接数据库
Statement state=conn.createStatement(); //获取Statement对象,Statement对象用于想数据库发送sql语句
state.executeUpdate(dbSqlStr); //更新数据库
state.close();
}
catch(Exception e){insertResult=false;}
return insertResult; //返回boolean值
}
//用于获取查询结果,并返回rs
public ResultSet getQueryResults(String dbSqlStr)
{
try{
//数据库操作
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //装载数据库驱动
Connection conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd); //连接数据库
Statement state=conn.createStatement(); //获取Statement对象,Statement对象用于想数据库发送sql语句
dbQueryRs=state.executeQuery(dbSqlStr); //执行查询
//System.out.println(dbQueryRs);
//state.close();
}
catch(Exception e){;}
return dbQueryRs; //返回rs
}
}
//以下是测试类
class test
{
public static void main(String[] args)
{
dbHandle temp=new dbHandle();
temp.setDbUrl("jdbc:odbc:mysql");
System.out.println(temp.getDbUrl());
temp.setDbUser("root");
System.out.println(temp.getDbUser());
temp.setDbPwd("root");
System.out.println(temp.getDbPwd());
temp.setDbSqlStr("select * from userpriv");
System.out.println(temp.getDbSqlStr());
try{
ResultSet rs=temp.getQueryResults("select max(xxbm) as maxxxbm from xxb");
rs.next();
System.out.println(rs.getString("maxxxbm"));
}
catch(Exception e){System.out.println(e);}
}
}
Top
8 楼bookbobby(书呆)回复于 2002-02-04 16:25:30 得分 0
下面是我做的一个测试页面,里面有用刀这个bean
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=gb2312" %>
<%-- 注释块 --%>
<%-- 文件名:test.jsp --%>
<%-- 存放目录:/test/test.jsp --%>
<%-- 功能:显示测试数据库中的所有username --%>
<%-- 注释块==完 --%>
<%-- 定义bean的调用 --%>
<jsp:useBean id="user" class="testC.dbHandle" scope="session"/>
<%-- 以下用于设置bead中的各项属性 --%>
<jsp:setProperty name="user" property="dbUrl" value="jdbc:odbc:mysql"/>
<jsp:setProperty name="user" property="dbUser" value="root"/>
<jsp:setProperty name="user" property="dbPwd" value="root"/>
<HTML>
<BODY>
<table border="1" bordercolorlight="#ffffff" bgcolor="#eeeeee" cellspacing="0">
<% ResultSet getDbResults=user.getQueryResults("select count(*) from xxb");//接受bean中传递过来的值%>
<%while (getDbResults.next()) {%>
<tr>
<td bgcolor="#cecece">记录总数:</td><td><% out.print(getDbResults.getString(1)); %></td>
<td> </td>
</tr>
<%}%>
<% getDbResults=user.getQueryResults("select * from xxb order by xxbm");//接受bean中传递过来的值%>
<%while (getDbResults.next()) {%>
<tr>
<% String tempXxbm=getDbResults.getString("xxbm"); %>
<td><a href='viewnr.jsp?xxbm=<%= tempXxbm%>'><% out.print(getDbResults.getString("xxbt")); %></a></td>
<td>
<% switch(getDbResults.getInt("lbbm"))
{
case 1003: out.print("<a href='test.jsp?lbbm=1003'>大事记</a>");break;
case 1004: out.print("<a href='test.jsp?lbbm=1004'>人物志</a>");break;
case 1005: out.print("<a href='test.jsp?lbbm=1005'>地名录</a>");break;
case 1006: out.print("<a href='test.jsp?lbbm=1006'>综合类</a>");break;
case 1007: out.print("<a href='test.jsp?lbbm=1007'>政治类</a>");break;
case 1008: out.print("<a href='test.jsp?lbbm=1008'>工业类</a>");break;
case 1009: out.print("<a href='test.jsp?lbbm=1009'>农业类</a>");break;
case 1010: out.print("<a href='test.jsp?lbbm=1010'>经济类</a>");break;
case 1011: out.print("<a href='test.jsp?lbbm=1011'>科教文卫</a>");break;
}
%>
</td>
<td>发布时间:<% out.print(getDbResults.getString("fbsj")); %></td>
</tr>
<%}%>
</table>
</BODY>
</HTML>
Top
9 楼xiaoluo(Aaron)回复于 2002-02-04 16:51:00 得分 0
我去试试Top




