-
dbcp数据库连接池:
导入相关的jar包
在项目的根目录下新建一个配置文件dbcp.properties,需要配置的属性如下图
查看全部 -
jdbc事务操作: 1.connection.setAutoCommit(false)关闭自动提交 2.把对数据库的操作加入try catch块 3.如果中间报错,则在catch块中因connection.rollback()回滚(在程序中可用connection.setSavepoint()设置保存点,rollback()也可以接受Savepoint参数,返回到指定保存点位置 ) 4.正常执行则在try块末尾用connection.commit()手动提交
查看全部 -
JDBC对事务管理的支持 1、我们通过提交commit()或是回退rollback()来管理事务的操作 2、事务操作默认是自动提交 3、可以通过setAutoCommit(false)来禁止自动提交
查看全部 -
事务的特点
原子性:事务是一个完整的操作
一致性:当事务完成时,事务必须处于一致状态
隔离性:对数据的=进行修改的所有并发事务都是彼此隔离的,类似于java中的同步原理。
永久性:事务完成之后,对数据库的修改永久保持,一次性交易,概不退换。
查看全部 -
@JDBC---带输出参数的存储过程
存储过程的代码:
CREATE PROCEDURE `sp_select_count`(OUT count INT(10)) BEGIN SELECT COUNT(*) INTO count FROM user1; END
调用过程:
//1.获取连接 Connection c = DBHelper.getConnection(); //2.获得CallableStatement CallableStatement cs = c.PrepareCall("call sp_select_count(?)"); cs.registerOutParameter(1,Types.INTEGER); //3.执行存储过程 cs.execute(); //4.处理结果集 cs.getInt(1);
查看全部 -
@JDBC---带输入参数的存储过程
存储过程的代码:
CREATE PROCEDURE `sp_select_nofilter`(IN sp_name VARCHAR(20)) BEGIN IF sp_name IS NULL OR sp_name = '' THEN SELECT * FROM user1; ELSE IF LENGTH(sp_name)=11 AND SUBSTRING(sp_name,1,1)=1 THEN SELECT * FROM user1 WHERE user_naem=sp_name; ELSE SELECT *FROM user1 WHERE user_name LIKE CONCAT('%',sp_name,'%'); END IF; END IF; END
调用过程:
//1.获取连接 Connection c = DBHelper.getConnection(); //2.获得CallableStatement CallableStatement cs = c.PrepareCall("call sp_select_filter(?)"); cs.setString(1,sp_name); //3.执行存储过程 cs.execute(); //4.处理结果集 ResultSet rs = cs.getResultSet(); //5.遍历结果集 while (rs.next()){ rs.getString(...); ... }
查看全部 -
@JDBC---调用无参存储过程
存储过程的代码:
CREATE PROCEDURE db_name.sp_name() BEGIN select * FROM table_name; END
调用过程:
//1.获取连接 Connection c = DBHelper.getConnection(); //2.获得CallableStatement CallableStatement cs = c.PrepareCall( "call sp_select()" ); //3.执行存储过程 cs.execute(); //4.处理结果集 ResultSet rs = cs.getResultSet(); //5.遍历结果集 while (rs.next()){ rs.getString(...); ... }
查看全部 -
1. Statement、PreparedStatement和CallableStatement都是接口(interface)。 2. Statement继承自Wrapper、PreparedStatement继承自Statement、CallableStatement继承自PreparedStatement。 3. Statement接口提供了执行语句和获取结果的基本方法; PreparedStatement接口添加了处理 IN 参数的方法; CallableStatement接口添加了处理 OUT 参数的方法。 4. a. Statement: 普通的不带参的查询SQL;支持批量更新,批量删除; b. PreparedStatement: 可变参数的SQL,编译一次,执行多次,效率高; 安全性好,有效防止Sql注入等问题; 支持批量更新,批量删除; c. CallableStatement: 继承自PreparedStatement,支持带参数的SQL操作; 支持调用存储过程,提供了对输出和输入/输出参数(INOUT)的支持; Statement每次执行sql语句,数据库都要执行sql语句的编译 ,最好用于仅执行一次查询并返回结果的情形时,效率高于PreparedStatement。 PreparedStatement是预编译的,使用PreparedStatement有几个好处 1. 在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率要高。 2. 安全性好,有效防止Sql注入等问题。 3. 对于多次重复执行的语句,使用PreparedStament效率会更高一点,并且在这种情况下也比较适合使用batch; 4. 代码的可读性和可维护性。
查看全部 -
mybatis课程
查看全部 -
mybatis的特点
查看全部 -
hibernate的相关课程
查看全部 -
jdbc与替代产品的优缺点
查看全部 -
PreparedStatements 预编译的处理
查看全部 -
Isolation Durability
查看全部 -
原子性 一致性
查看全部
举报