resin下jsp的bean访问数据库有问题,实在是不知道哪里有毛病。

maplewind 2001-10-04 04:28:19
哪位朋友能告诉我到底什么地方有问题。
我照着《jsp网络程序设计》的实例做的,但是老是有错误?
javabean程序如下:放在目录D:\Software\resin-2.0.2\doc\WEB-INF\classes\person下。
package person;
import java.sql.*;
public class personbean{
String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr="jdbc:odbc:k_person";

Connection conn=null;
ResultSet rs=null;
public personbean(){
try{
Class.forName(sDBDriver);
}catch(java.lang.ClassNotFoundException e){
System.err.println("personbean(): "+e.getMessage());
}
}

public ResultSet executeQuery(String sql){
rs=null;
try{
conn=DriverManager.getConnection(sConnStr);
Statement stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}
catch(SQLException ex){
System.err.println("aq.executeQuery: "+ex.getMessage());
}
return rs;
}
}

jsp程序如下:放在目录D:\Software\resin-2.0.2\doc\kkk下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html";charset=gb2312">
<title>档案</title>
</head>

<body>
<p><b>YX Co. 档案</b></p>
<%@ page language="Java" import="java.sql.*" %>
<jsp:useBean id="p_bean" scope="page" class="person.personbean"/>
<%
ResultSet rs=p_bean.executeQuery("select * from inf");
String kk="";
while (rs.next()){
kk=rs.getString("ID");
out.print("<LI>"+kk+"</li><br>");
out.print(rs.getString("Name"));
out.print(" ");
out.print(rs.getString("Age"));
out.print(" ");
out.print(rs.getString("Add"));
out.print(" ");
out.print(rs.getString("Tel"));
out.print(" ");
out.print(rs.getString("Note"));
}
rs.close();
%>

</body>
</html>

运行后报错:
500 Servlet Exception
java.sql.SQLException
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:285)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:376)
at _zhk._person_0inf__jsp._jspService(/zhk/person_inf.jsp:39)
at com.caucho.jsp.JavaPage.service(JavaPage.java:87)
at com.caucho.jsp.JavaPage.subservice(JavaPage.java:81)
at com.caucho.jsp.Page.service(Page.java:474)
at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:166)
at com.caucho.server.http.Invocation.service(Invocation.java:277)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216)
at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
at java.lang.Thread.run(Thread.java:484)


--------------------------------------------------------------------------Resin 2.0.2 (built Mon Aug 27 16:52:49 PDT 2001)
数据库是access。
odbc也照书上的设了。

请告诉我什么地方有问题。
...全文
174 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
maplewind 2001-10-16
  • 打赏
  • 举报
回复
奇怪,这个帖子我给了分的啊。
怎么现在连我自己都不能管理了?
maplewind 2001-10-08
  • 打赏
  • 举报
回复
谢谢你的帮助。
也谢谢lusxiao恢复偶的帖子。
ewhj 2001-10-07
  • 打赏
  • 举报
回复
下面是完整的代码,建议多参考Sun的Java资料,包括API和Tutorial,祝学习进步。
<html>
<body>
<%@page language="Java" import="java.sql.*"%>
<jsp:useBean id="p_bean" scope="page" class="person.personbean"/>
<%
ResultSet rs=p_bean.executeQuery("select name,age,add,tel,note from inf");
String kk="";
InputStream fin;
byte[] buff = new byte[4096];
int size;
while(rs.next()){
out.println("<LI>"+kk+"</li><br>");
out.println(rs.getString("name"));
out.print(" ");
out.print(rs.getString("tel"));
out.print(" ");
out.print(rs.getString("add"));
out.print(" ");
out.print(rs.getString("age"));
out.print(" ");
fin = rs.getAsciiStream("note");
for(;;){
size=fin.read(buff);
System.err.println("size is "+size);
if(size==-1) break;
out.print(new String(buff, 0, size));
}
out.print("<br>");
}
rs.close();
%>
</body>
</html>
ewhj 2001-10-05
  • 打赏
  • 举报
回复
既然找到了问题所在,应该不难解决啊,在你的JSP中试试下面这段代码:
.
.
.
InputStream fin;
byte[] buff = new byte[1024];
int size;
while(rs.next()){
.
.
.
fin = rs.getAsciiStream("note");
for(;;){
size=fin.read(buff);
System.err.println("size is "+size);
if(size==-1) break;
out.print(new String(buff, 0, size));
}
out.print("<br>");
}
maplewind 2001-10-05
  • 打赏
  • 举报
回复
你的程序有点看不懂,能不能根据我的程序来改,说清楚加在什么地方?我刚学jsp和java,总共才三周。见笑
还是要好好谢谢你。
明天我来加分。
maplewind 2001-10-05
  • 打赏
  • 举报
回复
奇怪啊,奇怪,
我再试,备注就是不能为空,不管是不是允许空字符
maplewind 2001-10-05
  • 打赏
  • 举报
回复
这个问题很奇怪,我的note时备注属性
add是文本属性,都为不允许空字符,则note会出错,把note改成允许空字符就通过了。
但是为什么add就可以不允许空字符缺不出错。
我还是不知道问题的毛病
maplewind 2001-10-05
  • 打赏
  • 举报
回复
我查出问题了,是我的note有个字段是空的,但是这是故意的。
而且,缺省不是可以为null吗?
如果遇到空的时怎么办啊
lusxiao 2001-10-05
  • 打赏
  • 举报
回复
Age,Add,Tel,Note
在数据库里有没有?
maplewind 2001-10-05
  • 打赏
  • 举报
回复
奇怪,我把select语句改成select Name from inf就可以了。
这是为什么?
maplewind 2001-10-05
  • 打赏
  • 举报
回复
ewhj照你说的改了后,错误变了(第一行),但还是不行

java.sql.SQLException: Column not found
at sun.jdbc.odbc.JdbcOdbcResultSet.findColumn(JdbcOdbcResultSet.java:1779)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:376)
at _zhk._person_0inf__jsp._jspService(/zhk/person_inf.jsp:19)
at com.caucho.jsp.JavaPage.service(JavaPage.java:87)
at com.caucho.jsp.JavaPage.subservice(JavaPage.java:81)
at com.caucho.jsp.Page.service(Page.java:474)
at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:166)
at com.caucho.server.http.Invocation.service(Invocation.java:277)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:129)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:216)
at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:158)
at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
at java.lang.Thread.run(Thread.java:484)

maplewind 2001-10-05
  • 打赏
  • 举报
回复
那位能帮一下小弟。
ewhj 2001-10-05
  • 打赏
  • 举报
回复
将select * from inf改成select Name,Age,Add,Tel,Note from inf试试看。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧