请教各位大侠,我已经弄了两天了,实在不知道为什么,页面结果怎么是NULL,下面是我的数据库连接Bean文件DatabaseCon.java源代码和测试数据库连接Bean的JSp文件testBean.jsp.
DatabaseCon.java的源代码如下:
package bookshop;
import java.io.*;
import java.sql.*;
public class DatabaseCon
{
public Connection con;
public String URL="jdbc:odbc:mybooks";
public String Message;
public boolean connection(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException ex){
Message=ex.getMessage();
System.exit(-1);
}
try{
con=DriverManager.getConnection(URL,"sa","");
return true;
}
catch(SQLException ex){
Message=ex.getMessage();
return false;
}
}
public boolean close()
{
try{
con.close();
return true;
}
catch(Exception ex){
Message=ex.getMessage();
return false;
}
}
public ResultSet exeSQL(String sqlstr)
{
try{connection();
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(sqlstr);
return rs;
}
catch(Exception ex)
{Message=ex.getMessage();}
return null;
}
public String getString(ResultSet rs,String str)
{ try{
return rs.getString(str);
}
catch(Exception ex)
{Message=ex.getMessage();}
return null;
}
}
测试数据库连接Bean的JSP文件testBean.jsp如下:
<%@ page contentType="text/html; charset=gb2312" import="java.sql.*" %>
<html>
<head>
<title>测试数据库连接Bean</title>
</head>
<jsp:useBean id="dbBean" scope="session" class="bookshop.DatabaseCon" />
<body bgcolor="#ffffff">
<%
ResultSet rs=dbBean.exeSQL("select * from bookinfo");
String str;
try{
while(rs.next()) {
str=dbBean.getString(rs,"PUBLISHER");
%>
[<%=dbBean.getString(rs,"TITLE")%>] -> <%=str%><br>
<%
}}catch(Exception ex)
{out.print(ex.getMessage());}
%>
</body>
</html>
运行结果是:null
我已经弄了两天了,实在不知道怎么回事,我简单的测试数据库连接时是成功的,可不知道为什么这样就不行,请教各位大侠,帮忙,感激不尽!
DatabaseCon.java的源代码如下:
package bookshop;
import java.io.*;
import java.sql.*;
public class DatabaseCon
{
public Connection con;
public String URL="jdbc:odbc:mybooks";
public String Message;
public boolean connection(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException ex){
Message=ex.getMessage();
System.exit(-1);
}
try{
con=DriverManager.getConnection(URL,"sa","");
return true;
}
catch(SQLException ex){
Message=ex.getMessage();
return false;
}
}
public boolean close()
{
try{
con.close();
return true;
}
catch(Exception ex){
Message=ex.getMessage();
return false;
}
}
public ResultSet exeSQL(String sqlstr)
{
try{connection();
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(sqlstr);
return rs;
}
catch(Exception ex)
{Message=ex.getMessage();}
return null;
}
public String getString(ResultSet rs,String str)
{ try{
return rs.getString(str);
}
catch(Exception ex)
{Message=ex.getMessage();}
return null;
}
}
测试数据库连接Bean的JSP文件testBean.jsp如下:
<%@ page contentType="text/html; charset=gb2312" import="java.sql.*" %>
<html>
<head>
<title>测试数据库连接Bean</title>
</head>
<jsp:useBean id="dbBean" scope="session" class="bookshop.DatabaseCon" />
<body bgcolor="#ffffff">
<%
ResultSet rs=dbBean.exeSQL("select * from bookinfo");
String str;
try{
while(rs.next()) {
str=dbBean.getString(rs,"PUBLISHER");
%>
[<%=dbBean.getString(rs,"TITLE")%>] -> <%=str%><br>
<%
}}catch(Exception ex)
{out.print(ex.getMessage());}
%>
</body>
</html>
运行结果是:null
我已经弄了两天了,实在不知道怎么回事,我简单的测试数据库连接时是成功的,可不知道为什么这样就不行,请教各位大侠,帮忙,感激不尽!
解决方案 »
- 新手请教jsp网站发布问题,急!请大家帮帮忙.
- 急求jsp传值问题
- web
- jsp 访问 access 问题
- 重分求一答案!!写FTP上传的APPLET时,遇到的一个问题!!请帮忙解决,不够,再加!!!请大家帮忙解决,顶起有分.
- 十万火急, 我的项目需要一个好东西!!! 求助!!!!
- 用Smartupload JAVABEAN上传中文文件名的图片文件,上传了之后文件名了成这样:世界贸易大厦๱
- 一个绝对的难题,以前一直没有解决,欢迎各位高手讨论,绝对有使用价值
- .pdf文件如何打开 !!!帮帮忙,在线等待
- jsp和servlet的初始化参数是写在哪个配置文件中的?
- 一道简单的算法题
- 判断表单一个元素的长度用js该怎么写
怎么没看到无参构造方法,以及一些getter/setter
楼主认为connection/close这些方法会启动调用?你这个设计就有问题
根本不需要usebean,你要测试的话直接在jsp里面<% %>里面写代码好了
进行操作试试
<html>
<head>
<title>测试数据库连接Bean </title>
</head>
<jsp:useBean id="dbBean" scope="session" class="bookshop.DatabaseCon" />
<body bgcolor="#ffffff">
<%
if(dbBean.connect())
{
ResultSet rs=dbBean.exeSQL("select * from bookinfo");
String str;
try{
while(rs.next()) {
str=dbBean.getString(rs,"PUBLISHER");
%>
[ <%=dbBean.getString(rs,"TITLE")%>] -> <%=str%> <br>
<%
}}catch(Exception ex)
{out.print(ex.getMessage());}
}else
{
out.println("连接数据库出错!");
}
%>
</body>
</html>
ex.printStackTrace();
while(rs.next()) {
str=dbBean.getString(rs,"PUBLISHER");
%>
[ <%=dbBean.getString(rs,"TITLE")%>] -> <%=str%> <br>
<%
}}catch(Exception ex)
{out.print(ex.getMessage());}
%>
</body>
估计是上面那几个位置的问题。
因为 rs.next() ;这个结果集是有移动的。
你把他传到 dbBean里面去了。 可能这个结果集被你重新next()几次。因为传得是引用所以rs本身已经移动。
你在页面上的while(rs.next())将不会出现你想要的 结果。
如果需要直接 str = rs.getString(....); 就可以了。最好不要让 dbBean 去修改rs.
str=rs.getString("TITLE");
改成这样还是不行啊
请教,具体该怎么做啊?实在不知道怎么弄了?
请教!我也觉得是这个问题,可不知道具体怎么改,已经改了n次了,还是不行
1.看不到 get/set 方法;
2.连接数据库,代码要--精简;
3.您的思路还不是很清晰:
4.我个人觉得应该这样好点:
首先,建一个BookBean 的实体,里面有get/set 方法;
然后,建一个方法为 Bean 赋值:
public void getBookBean(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConenction("jdbc:odbc:bookinfo","sa","");
Statement st=con.createStatement();
Resultset rs=st.excuteQuery("select * from bookinfo"); while(){
BookBean bkBean=new BookBean();
bkBean.setPublisher(rs.getString("PUBLISHER"));
}
}catch(Exception ex){
System.out.println("====getBookBean() 方法中,连接数据库出错!!!!====");
}
} 最后,在 jsp 中导入方法 getBookBean()的包,
使用实例化: <jsp:useBean id="dbBean" scope="session" class="bookshop.DatabaseCon" />,
调用这个方法: <%bkBean.getBookBean()%>
使用JSP标准动作:
<jsp:useBean id="bkBean" scope="session" class="bookshop.BookBean" />
得到BookBean 中的值为: <jsp:getPropertity name="bkBean" propertity="publisher"/>5.想了解更多,多就看下 MVC 模式吧!!!