1、关于PreparedStatement插入(修改)blob以及查询blob
插入 可以通过流(图片所在路径) 然后 通过PreparedStatement.setBlob();
查询 PreparedStatement.getBlob().getBinaryStream(); 通过这两个方法得到一个流,然后将这个读流 写流
2、关于批量插入使用PreparedStatement:
JDBC的批量处理语句包括下面三个方法:
-
addBatch(String):添加需要批量处理的SQL语句或是参数;
-
executeBatch():执行批量处理语句;
-
clearBatch():清空缓存的数据
注意:
1、mysql服务器默认是关闭批处理的,我们需要通过一个参数,让mysql开启批处理的支持。
?rewriteBatchedStatements=true 写在配置文件的url后面
2、注意还可以将执行sql后的设置为不自动提交数据,当积攒党一定量在提交 这样可以缓解硬盘内内存读写速度不一致的问题
3、关于数据库的连接的第二种方式(通过数据库连接池)
常用的3种:c3p0,dbcp,druid
使用数据库连接池 都要预先导包 注意(dbcp需要导入两个一个是dbcp 一个是pool)
各自优缺点及配置文件:
dbcp:速度相对c3p0较快 不稳定 dbcp.properties
c3p0:速度相对较慢,稳定性还可以 一般为xml
Druid 是阿里提供的数据库连接池,据说是集DBCP 、C3P0 、Proxool 优点于一身的数据库连接池, Druid.properties
注意几个概念:
-
DataSource 通常被称为数据源,它包含连接池和连接池管理两个部分,习惯上也经常把 DataSource 称为连接池
-
DataSource用来取代DriverManager来获取Connection,获取速度快,同时可以大幅度提高数据库访问速度。
-
特别注意:
-
数据源和数据库连接不同,数据源无需创建多个,它是产生数据库连接的工厂,因此整个应用只需要一个数据源即可。
-
当数据库访问结束后,程序还是像以前一样关闭数据库连接:conn.close(); 但conn.close()并没有关闭数据库的物理连接,它仅仅把数据库连接释放,归还给了数据库连接池。
4、关于数据表操作的版本升级方式(通过dbutils.jar) 需要导包
queryrunner
update 增删改
query 查询
handler返回集的操作
对beasDAO中的基本操作 做替换
DbUtils工具类(关闭资源的第二种方式)
有方法可以关闭资源