连接池


总结:1.连接池:java对外提供了连接的接口,连接池的存在就省去了每次创建和释放连接。
2.连接池的连接条件:1.将commons-pool-1.5.6.jar的jar包引进java项目下的lib文件夹
3.用连接池对象代替dao'层的Connection对象;
4.在tools工具包里创建MyDBUtils工具文件和JDNCUtils一样
QueryRunner qr=new QueryRunner(MyDBUtils.getDatasource());用MyDBUtils.getDatasource()代替了Connection
String sql="select * from user where name=?";
Object[] obj={"小红"};
int row=qr.update(sql,obj);
使用连接池也不需要释放
5.什么是事务:一件事情由n个单元组成,要么这n个丹玉一起成功要么这n个单元一起失败,这n个单元一起组成的事情就叫事务
6.一条sql语句就是一个事务,默认开启事务并提交事务
7.Mysql的事务:1.开启事务:start transaction()运行的sql会先存在内存中,所以没有改变数据库,所以说,rollback回滚以后能回复,因为没有改变数据库,需要commit提交才会把sql 语句执行后的结果写进数据库里
commit:是提交事务,将事务开启到事务提交这一块的sql会真正的提交到数据库,并对数据库进行修改
事务回滚:rollback:从事务开启到事务回滚,这一块所有的sql都没有效果,
事务开启后,只是把sql语句的运行和运行结果存储在内存中并没有作用在数据库上所以可以回滚后恢复原来的样子
8.JDBC事务操作:1.executeypdate()和executequery都是事务自动提交了,每一次执行都会提交
9.开启事务:conn.setAutoComnmit(false)(默认的是true是自动提交,需要改成false才会自动提交)
10.事务提交:conn.commit; 事务回滚:conn.rollback;
11.控制事务的Connection必须是同一个Connection因为需要包装控制的是同一个事务
12.事务的特性和隔离级别:原子性:指事务是一个不可分离的整体要么都执行要么都不执行
13.一致性:一个事务中,事务的前后数据的完整性必须保持一致
14.隔离性:指多个事务,指多个用户一起访问时
15.持久性:是指一但事务提交那么对数据库的影响是永久的,即使数据库发生了故障。
16.账号的转入转出:1.jsp文件:<body> <form action="/Servlet" method="post">
转出账户:<input type="text" name="out">
转入账户:<input type="text" name="in">
转出金额:<input type="text" name="money">
提交:<input type="submit" value="确认"> </form> </body>
Dao层:转出:public void outmoney(Connection conn,String out,double money){
QueryRunner qr=new QueryRunner();
String sql="update conn set money=money-? where uname=?";
qr.update(conn,sql,out,money);
转入:public void inmoney(Connection conn,String in,double money){
String sql="update conn set money=money+? where uname=?";
qr.update(conn,sql,in,money);
Service层:public void trans(String out,String in,double money){
Connection conn=MyDBUtils.getconn();
try{conn.setAutoComit(false); dao.outmoney(conn,out,money); dao.inmoney(conn,in,money)
conn.comit(); }catch{conn.rollback};
Servlet层:request.setcharacterEncoding("UTF-8");
1.获取数据: String out=request.getParameter("out"); String in=request.getParameter("in")
String moneyy=request.getParameter("money"); double money=Double.parseDouble(moneyy);
servicr.tansl(out,in,money);
response.setContentType("text/html;setchar=UTF-8");
response.getwriter().write("转账成功")


posted @ 2019-09-27 15:01  韩凯  阅读(171)  评论(0编辑  收藏  举报