免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2137 | 回复: 5
打印 上一主题 下一主题

请看看,我从记录集中取记录为什么取不出来?   [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-13 17:28 |只看该作者 |倒序浏览
我想从表中取记录
我写了这样两个脚本
faq.java

package test;
import java.sql.*;
public class faq{
String sDBDriver="sun.jdbc.odbc.JdbcoOdbcDriver";
String sConnStr="jdbc.odbc:faq";
Connection conn=null;
ResultSet rs=null;
public faq(){
try{
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e){
System.err.println("faq():"+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;
}
}

faq.jsp

<html>;
<head>;
<meta http-equiv="Content-Type"content="text/html;charset=gb2312">;
<title>;FAQ about JSP!</title>;
</head>;
<body>;
<p>;<b>;FAQ about JSP</b>;</p>;
<%@ page language="java" import="java.sql.*" %>;
<jsp:useBean id="workM" scope="page" class="test.faq" />;
<%
ResultSet RS=workM.executeQuery("select * from faq";
String tt;
while (RS.next()) {
tt=RS.getString("Answer";
out.print("<LI>;"+RS.getString("subject"+"</LI>;";
out.print("<pre>;"+tt+"</pre>;";
}
%>;
</body>;
</html>;

我现在如果把while块去掉,执行正常,说明已经获得,但执行RS.next时出现下面错

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:24
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
at java.lang.Thread.run(Thread.java:484)

root cause

java.lang.NullPointerException
at org.apache.jsp.faq_jsp._jspService(faq_jsp.java:72)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:204)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
at java.lang.Thread.run(Thread.java:484)

如果ResultSet RS=workM.executeQuery("select * from faq";
执行不能成功,怎样捕捉异常?在我的JAVA中已经有异常捕捉了,怎样返回到页面上?





论坛徽章:
0
2 [报告]
发表于 2003-02-13 18:03 |只看该作者

请看看,我从记录集中取记录为什么取不出来?  

<%
ResultSet RS=workM.executeQuery("select * from faq";
String tt;
while (RS.next()) {
tt=RS.getString("Answer";
}
%>;
<LI>;<%=getString("subject"%>;</LI>;
<pre>;<%=tt%>;</pre>;;
} %>;

论坛徽章:
0
3 [报告]
发表于 2003-02-14 09:23 |只看该作者

请看看,我从记录集中取记录为什么取不出来?  

这是我的两个脚本

faq.java

String sDBDriver="sun.jdbc.odbc.JdbcoOdbcDriver";
String sConnStr="jdbc.odbc:capms";
Connection conn=null;
ResultSet rs=null;
public faq(){
try{
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e){
System.err.println("faq():"+e.getMessage());
}
}
public ResultSet executeQuery(String sql)
{
rs=null;
try{
conn=DriverManager.getConnection(sConnStr,"scott","tiger";
Statement stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println("aq.executeQuery:"+ex.getMessage());
}
return rs;
}
}

faq.jsp

<html>;
<head>;
<meta http-equiv="Content-Type"content="text/html;charset=gb2312">;
<title>;FAQ about JSP!</title>;
</head>;
<body>;
<p>;<b>;FAQ about JSP</b>;</p>;
<%@ page language="java" import="java.sql.*" %>;
<jsp:useBean id="workM" scope="page" class="test.faq" />;
<%
ResultSet RS=workM.executeQuery("select em_code,name from employee";
String tt;
try {
  while (RS.next()) {
    tt=RS.getString("em_code";
    out.print("<LI>;"+RS.getString("name"+"</LI>;";
    out.print("<pre>;"+tt+"</pre>;";
  }
}
catch(Exception ex) {
  out.println("======= Error ========";
  out.println(ex.toString());
  out.println("======= Error ========";
}
%>;
</body>;
</html>;

执行后
java.lang.NullPointerException 被捕捉到.
是什么地方有问题?

论坛徽章:
0
4 [报告]
发表于 2003-02-16 22:22 |只看该作者

请看看,我从记录集中取记录为什么取不出来?  

excuteQuery()要求有结果集返回.

catch(Exception ex) {
out.println("======= Error ========";
out.println(ex.toString());
out.println("======= Error ========";
}
后面再加上
return ******;

论坛徽章:
0
5 [报告]
发表于 2003-02-16 22:26 |只看该作者

请看看,我从记录集中取记录为什么取不出来?  

这地方我也不专业。我的写法是这样的.

package sys;
import java.sql.*;                                // JDBC驱动程序用的Sybase  Jconnect_55

public class conn {
String sConnStr = "jdbc:sybase:Tds:182.69.1.66:8888?charset=eucgb&amp;jconnect_version=0";
Connection con = null;
ResultSet rs = null;
Statement stmt =null;

// 用来查询的Method
public ResultSet Query(String sql) throws SQLException,Exception {
Class.forName("com.sybase.jdbc2.jdbc.SybDriver".newInstance();
con = DriverManager.getConnection(sConnStr,"****","****";
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                                               ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(sql);
return rs;
}

// 用来插入,删除,更改的method
public  void Update(String sql) throws SQLException,Exception {
Class.forName("com.sybase.jdbc2.jdbc.SybDriver".newInstance();
con = DriverManager.getConnection(sConnStr,"****","****";
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                                               ResultSet.CONCUR_UPDATABLE);
stmt.executeUpdate(sql);
}

//用来关闭结果集的method
public void CloseRs() throws SQLException,Exception{
        rs.close();
        }
//用来关闭stmt的method
public void CloseStmt() throws SQLException,Exception{
        stmt.close();
        }

// 用来关闭数据库连的method
public void CloseCon() throws SQLException,Exception{
        con.close();
}

}

论坛徽章:
0
6 [报告]
发表于 2003-02-17 09:38 |只看该作者

请看看,我从记录集中取记录为什么取不出来?  

我的tomcat console是的错误是

aq.executeQuery:No suitable driver
.....
为什么找不到driver
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP