请问如何再jsp里引用javabean里返回的resultset?

xiaoluo 2002-02-04 02:31:54
我写了一个javabean名字位db,里面有一个方法(名字为setcon )是传入一个sql语句参数,返回相应的resultset,我在jsp里这样调用out.print(db.setCon("select * from table1"));发现输出null,如果引用返回的resultset那么有空指针exception,请问如何再jsp里引用javabean里返回的resultset?
...全文
95 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xiaoluo 2002-02-04
我去试试
回复
bookbobby 2002-02-04

下面是我做的一个测试页面,里面有用刀这个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>
回复
bookbobby 2002-02-04

用用我的这个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);}

}
}


回复
night_knight 2002-02-04
把错误贴出来
回复
night_knight 2002-02-04
你这能通过编译吗?
回复
xiaoluo 2002-02-04
回复
xiaoluo 2002-02-04
报错,说空指针
回复
xiaoluo 2002-02-04
我把源代码贴出来,老兄帮忙看看
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>
回复
xexplorer 2002-02-04
肯定是你的bean出问题了,可以直接引用传回的resultset的,你的bean里面应该是无法实现query操作,无法得到resultset所以传回的resultset是null,并且你要想读出数据也不能像前面那样操作,你要这样。
Resultset rs=db.setCon("select * from table1");
if (rs.next())
{
out.print(rs.getString("ID"));
}
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告