JDBC+JavaWeb
1 PreparedStatement对Blob文件的操作
- PreparedStatement可以操作Blob类型的文件
Connection connection = MysqlUtil.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setBlob(index,InPutStream);
Connection connection = MysqlUtil.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(sql);
InputStream inputStream = new FileInputStream(new File("链接"));
preparedStatement.setBlob(1,InPutStream);
//通过流,添加Blob
2 PreparedStatement实现批量操作
- PreparedStatement执行相同的预编译的SQL语句时,不会每次都重新编译。所以效率远高于Statement
Connection connection = MysqlUtil.getConnection();
String sql="INSERT INTO user(user_name) VALUES(?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
for(int i =0;i<20000;i++){
preparedStatement.setInt(1,i);
}
int i = preparedStatement.executeUpdate();
- 使用addBatch()、executeBatch()和clearBatch
Connection connection = MysqlUtil.getConnection();
String sql="INSERT INTO user(user_name) VALUES(?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
for(int i =0;i<20000;i++){
preparedStatement.setInt(1,i);
if(i%500==0){
preparedStatement.executeBatch();
preparedStatement.clearBatch();
}
}
3 事务
- 事务是一组逻辑处理单元,使数据从一种状态变为另一种状态
- 一组逻辑操作单元:一个或多个DML操作
- 事务处理(事务操作):保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;要么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态。
- 为确保数据库中数据的一致性,数据的操纵应当是离散的成组的逻辑单元:当它全部完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应全部视为错误,所有从起始点以后的操作应全部回退到开始状态。
- 那些操作会导致数据的自动提交
- DDL操作一旦执行,都会自动提交。
- set autocommit=false 对DDL无效
- DML默认情况下,一旦执行,就会自动提交。
- set autocommit=false 就会取消DML自动提交
- 关闭连接时会自动提交数据
- DDL操作一旦执行,都会自动提交。
- 取消自动提交
connection.setAutoCommit(false);
- 提交数据
connection.commit();
- 遇到异常进行回滚
connection.rollback();
//完整版本
//使用事务以后的通用的增删改操作(version 2.0)
public void update(Connection conn ,String sql, Object... args) {
PreparedStatement ps = null;
try {
// 1.获取PreparedStatement的实例 (或:预编译sql语句)
ps = conn.prepareStatement(sql);
// 2.填充占位符
for (int i = 0; i < args.length; i++) {
ps.setObject(i + 1, args[i]);
}
// 3.执行sql语句
ps.execute();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 4.关闭资源
JDBCUtils.closeResource(null, ps);
}
}
3.1 事务的属性
-
原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 -
一致性(Consistency)
事务必须使数据库从一个一致性状态变换到另外一个一致性状态。 -
隔离性(Isolation)
事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 -
持久性(Durability)
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。
3.2 隔离级别
- 读未提交——出现脏读、不可重复度、幻读
- 读已提交——出现不可重复度、幻读
- 可重复读——出现幻读
- 串行化——都可以解决,但是并发性差
//获取隔离级别
connection.getTransactionIsolation();
//取消数据的自动提交
connection.setAutoCommit(false);
//设置数据库的隔离级别
connection.setTransactionIsolation();
//读已提交的
connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
**一般来说,数据库只要避免脏读就可以。 **
4数据库连接池
- 为解决开发中的数据库连接问题,采用数据库连接池技术。
1.javaWeb
-
javaweb是所有通过java语言编写可以通过浏览器访问的程序的总称
-
javaweb是基于请求和响应开发的
-
请求:请求是客户端向服务器发送数据,叫请求 Request
-
响应:服务器给客户端回传数据,叫响应 Response
-
请求和响应是成对出现的
-
web资源按实现的技术和呈现效果的不同,分为静态资源和动态资源
- 静态资源:html、css、js、mp4、jpg等等
- 动态资源:jsp页面、Servlet程序等
-
常用的服务器:Tomcat(轻量级javaweb服务器)、Jboss(支持所有JavaEE规范)
-
Servlet程序2.5版本是现在市面使用最多的版本
-
到了3.0之后,就是注解版本的Servlet使用
-
如何访问tomcat下的目录
localhost:8080/book/index.html
-
为数据库建立一个缓冲池,预先在缓冲池中放入一定量的连接当需要建立连接时,只需从缓冲池中取出一个,用完再放回去。

浙公网安备 33010602011771号