免费注册 查看新帖 |

Chinaunix

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

JavaBean 数据库操作异常啊,快来,救我啊!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-31 15:57 |只看该作者 |倒序浏览
package cobylin;
import java.sql.*;
public class Matter {
        private ConnDb Db;
        private ResultSet RS;
        private String SQL;

        private String Column;
        private String CoulumCN;
        private String Type;


        public Matter() {
                Db = new ConnDb();
                RS = null;
                SQL = "";
                }

        public ResultSet getColumnList() {
                try {
                        SQL = "select * from Column where";
                        RS = Db.executeQuery(SQL);
                        }
                catch(SQLException ex){
                        System.err.println("Get Colum List: " + ex.getMessage());
                        }
                return RS;
                }
               
        public ResultSet getClassList(String column) {
                try {
                        SQL = "select * from Class Column = '" + column + "'";
                        RS = Db.executeQuery(SQL);
                        }
                catch(SQLException ex) {
                        System.err.println("Get Class List: " + ex.getMessage());
                        }
                return RS;
                }





        }
编译器给出的错误是:
Matter.java:24: exception java.sql.SQLException is never thrown in body of corre
sponding try statement
                catch(SQLException ex){
                ^
Matter.java:35: exception java.sql.SQLException is never thrown in body of corre
sponding try statement
                catch(SQLException ex) {
                ^
2 errors

论坛徽章:
0
2 [报告]
发表于 2004-07-31 19:08 |只看该作者

JavaBean 数据库操作异常啊,快来,救我啊!!

你的SQLException已经被你的ConnDB捕捉了,而且你也没有throw出来啊,应该在你的ConnDB里面

public ResultSet executeQuery(SQL) throws SQLException
{
...
}

论坛徽章:
0
3 [报告]
发表于 2004-07-31 20:37 |只看该作者

JavaBean 数据库操作异常啊,快来,救我啊!!

哦,昏死,哈哈,谢谢入Perryhg 谢谢!

论坛徽章:
0
4 [报告]
发表于 2004-07-31 23:54 |只看该作者

JavaBean 数据库操作异常啊,快来,救我啊!!

try ... catch 刚刚开始使用觉得很烦,但是用久了就发现它的好处了,因为有些错误可以在程序运行中忽略的,而有些错误确不能忽略,一定要处理,否则不能进行下去,强行进行可能会造成灾难性的后果。在OOP的程序设计里面,class的嵌套层次非常复杂,有了try-catch,你就可以定义再哪一层里面处理这个Exception,可以了解产生那个Exception的原因,你还可以自己定义一个Exception把原来的多个Exception全部包裹起来来简化你的代码。

论坛徽章:
0
5 [报告]
发表于 2004-08-01 02:18 |只看该作者

JavaBean 数据库操作异常啊,快来,救我啊!!

多谢perryhg指教,真是受受益非浅啊!!!!不过我的Access数据库还是出了问题了,在stdout中出现了:[Microsoft][ODBC Microsoft Access Driver] 客户端的工作过多。的报告!!!在我的主页上连续的刷新5到10次后就会出现这样子!!要重启Tomcat才行,为什么啊!!!!5555

论坛徽章:
0
6 [报告]
发表于 2004-08-03 02:37 |只看该作者

JavaBean 数据库操作异常啊,快来,救我啊!!

在处理数据库的时候必须要用try{}catch(){}finally{}结构,确保你在finally里面关闭数据库的连接,你不关闭数据库连接就是给你oracle也吃不消的。

  1. //这辆个变量必须在try外面定义,并赋值为null,以确保finally可以关闭他们
  2. Connection conn = null
  3. Statment stmt = null
  4. try{
  5.     conn = ....getConnection();
  6.     stmt = conn.createStatement();
  7.     ....
  8.     stmt.execute();
  9.     ...
  10. }catch(SQLException e){
  11.     throw new MyCustomizedException('message");
  12. }finally{
  13.     if(stmt != null)
  14.     {
  15.       try{
  16.           stmt.close();
  17.       }catch(SQLException e){
  18.           //can ignore
  19.       }
  20.     }
  21.     if(conn != null)
  22.     {
  23.       try{
  24.           conn.close();
  25.       }catch(SQLException e){
  26.           //can ignore
  27.       }
  28.     }
  29. ]
复制代码

论坛徽章:
0
7 [报告]
发表于 2004-08-03 11:13 |只看该作者

JavaBean 数据库操作异常啊,快来,救我啊!!


  1. public ResultSet executeQuery(String sql) {
  2.         rs = null;
  3.         try {
  4.                 conn = DriverManager.getConnection(sConnStr);
  5.                 stmt = conn.createStatement();
  6.                 rs = stmt.executeQuery(sql);
  7.                 return rs;
  8.                 }
  9.         catch(SQLException ex) {
  10.                 System.err.println("ConnDb.executeQuery: " + ex.getMessage());
  11.                 }
  12.         finally{
  13.                 if (stmt != null) {
  14.                         try {
  15.                                 stmt.close();
  16.                                 }
  17.                         catch(SQLException e) {}
  18.                         }
  19.                 if (conn != null) {
  20.                         try {
  21.                                 conn.close();
  22.                                 }
  23.                         catch(SQLException e) {}
  24.                         }
  25.                 }
  26.         return rs;
  27.         }
复制代码


总是提示ResultSet被关闭,我想也是被关了,不过我应该怎么返回一个含有查询结果的ResultSet而又可以关闭数据库呢??

论坛徽章:
0
8 [报告]
发表于 2004-08-03 11:34 |只看该作者

JavaBean 数据库操作异常啊,快来,救我啊!!

你这样写代码别人很难看,建议用代码格式编辑一下。
另外只要你对库操作正确了并且SQL语句没错的话,那这个rs就是你想要的记录集便可以在try的最下面一行return呀。
另外你在finally后面也return了,为什么不成呢?
把错误信息或log贴出来。

论坛徽章:
0
9 [报告]
发表于 2004-08-03 11:45 |只看该作者

JavaBean 数据库操作异常啊,快来,救我啊!!

好的,谢谢,这是错误log
2004-08-03 11:12:43 StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
java.sql.SQLException: ResultSet is closed
        at sun.jdbc.odbc.JdbcOdbcResultSet.checkOpen(JdbcOdbcResultSet.java:6650)
        at sun.jdbc.odbc.JdbcOdbcResultSet.next(JdbcOdbcResultSet.java:1251)
        at org.apache.jsp.index_jsp._jspService(index_jsp.java:120)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:19
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)

论坛徽章:
0
10 [报告]
发表于 2004-08-03 11:54 |只看该作者

JavaBean 数据库操作异常啊,快来,救我啊!!

你传参的这个sql能否打出来?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP