jdbc数据库连接在方法中,而且要返回statement 或resultset 在方法里关闭连接会怎么样?要怎么处理?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdbc数据库连接在方法中,而且要返回statement 或resultset 在方法里关闭连接会怎么样?要怎么处理?相关的知识,希望对你有一定的参考价值。
如果要返回statement 或者resultset 就不能关闭连接,关了的话作为返回值被传出去的statement 或者resultset 被访问到的时候就会抛出异常。连接不关不会被有异常,但程序被多次执行后就有连接被占满,不能取得连接的问题出现。一般需要用到rs的数据,应在取得rs后,把里边的数据从新包装后返回,比如返回集合类或者bean类。在包装完成后关闭rs,state,conn。这样没问题 参考技术A 关闭链接statement 或resultset也关闭了,可以把数据存到list或bean中返回List或者bean。 参考技术B 写一个封装类,专门用来关闭connect,statement,resultset..先判断是否为空,不为空就关闭。记住要先关闭resultset,statement,connect.....以后要用到关闭的时候再调用这个方法。。
第一个jdbc
1. jdbc就是java提供连接数据库的规范。在java中就是一套接口。
实现这套接口的这套类就是数据库驱动,用数据库驱动才能连接数据库。
2. Junit是为了方便测试的技术手段,在测试时,一个类中只能有一个main方法。一个可以在一
在类中写一个方法,必须是public,返回值必须是void,方法一定不能穿参数,然后再方法上面加一个备注。
3.在导包的时候最好应该倒入java.sql.Connection,而不是com.mysql.jdbc.Connection。如果项目最开始时用的mysql,后来想换oracle,项目驱动就要换了,而代码里都用的是jdbc.mysql给出来的引用,就意味着换了数据库,驱动就要换,然后这些类也要换,这样就需要改大量的代码。
而如果你用接口来接受,不管你换什么库,用接口接收,就不需要改了。
4.原理图:
5.代码:
package com.sjx.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import org.junit.Test; public class Demo { @Test //发送插入语句 public void fun1() throws Exception{ //1 导入驱动类库 //2 注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //3 连接数据库 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day05", "root", "1234"); //4 操作数据库 Statement st = conn.createStatement(); String sql = "select * from t_user"; ResultSet rs = st.executeQuery(sql); //excute 原始,,增删改查都可以,返回值 true->查询由结果集 false->查询没有结果集
//executeBatch 批量执行sql
//executeUpdate 执行增删改
//executeQuery 执行查询
/*遍历结果集中的内容并打印*/
while(rs.next()){
String name = rs.geetString("name");
int id = rs.getInt("id");
int age = rs.getInt("age");
system.out.println(name+"==>"+age+"==>"+id);
}
//5 关闭资源
st.close();
conn.close();
}
}
以上是关于jdbc数据库连接在方法中,而且要返回statement 或resultset 在方法里关闭连接会怎么样?要怎么处理?的主要内容,如果未能解决你的问题,请参考以下文章
Java学习笔记8.1.2 初探JDBC - JDBC编程步骤