再利用JavaBean连接查询数据库时的一些疑问

tomsy2000 2014-08-11 09:52:40
内容已被编辑![color=#000000[/color]
...全文
166 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaofeifeiloving 2014-08-12
  • 打赏
  • 举报
回复
你可以将关闭的方法定义在Bean类中 public static void closeAll(Statement stmt,PreparedStatement pstmt,ResultSet rs){ try { if (rs != null) { rs.close(); } if (pstmt != null) { pstmt.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 执行完操作后可一次性关闭。
姜小白- 2014-08-12
  • 打赏
  • 举报
回复
在JSP页面里,rs为什么还得重新ResultSet一下,在Bean里已经声明了 java中对象的声明包括一个对象变量 以及它指向的堆对象的地址引用,即对象的初始化 Statement st; ResultSet rs; 仅声明了对象变量,并没有将它们指向到具体的对象引用,也就是它们还没有初始化,还不能使用,所以在jsp页面上先初始化,然后使用之。
zy_think123 2014-08-12
  • 打赏
  • 举报
回复

static{  Class.forName(driverName);
}
 public Connection getConnection(){  //创建数据库连接
        try{
          
           con=DriverManager.getConnection(url,userName,password);
          return con;
        }catch(Exception e){
            System.out.print("连接数据库失败"+e.getMessage());
            throw new RuntimeException(e);
        }
    }
    public ResultSet getResult(String sql){  //查询数据库
        try{
           // con=DriverManager.getConnection(url,userName,password);  //这一行不可少
       if(conn==null){
            conn=getConnection();
       }
            st=con.createStatement();//最好使用PreparedStatement
            rs=st.executeQuery(sql);
             
        }catch(Exception e1){
            System.out.print("无法把查询发送至数据库并获得结果"+e1.getMessage());
        }
        return rs;
    }
你的代码就可以做上面的一些改动,当然还有比如说你可以将某些属性放在Properties文件中,然后动态读取呀,这些就不说了,网上太多了。 你说的关闭的问题:当某个对象你不想要在使用的时候,你就把它关闭掉,说的不是很准确。我举个例子哈: rs,conn,st你都使用完毕了,那么就把它关闭,你不要调用了conn.close()后再去使用rs.getString()等方法,那么那个时候就会报空指针异常了,一般是在你不想在操作数据库的时候就关闭连接。 希望对你有所帮助
S117 2014-08-11
  • 打赏
  • 举报
回复
1、使用完不用了就关闭了,一般放在finally方法中 2、你的Bean中声明了ResultSet但并没有遍历ResultSet,你是把它交给了其他地方遍历 3、Class.forName(driverName);放在静态代码块中,只需加载一次就可以了,你的getConnection()方法会返回null,但你使用时并没有判断返回的connection是否为null,另外你的资源关闭方法也没有放在finally方法中,这种连接模版网上有很多示例,你可以参考参考
shixitong 2014-08-11
  • 打赏
  • 举报
回复
bean里面只是声明这些方法或者属性,并没有调用 就比如,我会抽烟,但是目前我没有抽烟,等我点烟然后开始吸烟,才要处理
小灯光环 2014-08-11
  • 打赏
  • 举报
回复
1.在操作完数据库关闭,比如执行了executeUpdate或者遍历完结果集,就是说用完之后,就完毕,从外到内一次关闭。 2.你不声明一个ResultSet对象去接收结果集的话,拿什么遍历? 3.还有很多地方可以优化,比如加载驱动放在静态块,通过PreparedStatement做动态参数赋值,还少一个update的方法。想封装一个比较好的DAO需要大量的工作经验和编码功底,说实话这个DAO差的挺远,连事务的代码都没封装根本不能用。

81,122

社区成员

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

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