Batch:需要执行大量的数据时可以使用批处理

注意点:

1、尽量使用Statement,因为如果是PreParedStatement可能会因为数据量太大而存在空间问题,编译器会报错。

2、把自动提交关闭,设置为手动提交。

事务:

基本概念:是数据库操作的一个单元,是一组同时执行,要么同时成功要么同时失败的语句。

开始于:连接到数据库上,并执行一条DML语句,前一个事务结束后又有一条新的DML语句

结束于: 执行COMMIT或ROLLBACK语句

执行一条DDL语句,例如CREATE TABLE语句,在这种情况下会自动执行COMMIT语句

执行一条DCL语句,例如GRANT语句,在这种情况下会自动执行COMMIT语句

断开与数据库的连接

执行一条DDL语句失败,这个时候就会自动执行ROLLBACK。

事务的四大特点(ACID):

Atomicity(原子性):表示一个事务内所有的操作都是一个整体,要么同时成功,要么同时失败。

Consistency(一致性):一个事物内任何一条语句发生错误,整个状态回滚到修改前

ISOLATION(隔离性):事务查看数据时数据所处的状态要么是另一并发事务修改前的状态,要么是修改后的状态,不会查看中间状态。

DURABILITY(持久性):一旦commit那么对于数据库的影响是永久的。

事务隔离级别由低到高:

读取未提交

读取已提交

可重复度

序列化

CLOB:用于存储大量的文本数据,大字段一般是以流的方式读取的。

使用CLOB将文本写入数据库中:

Class.forName("com.mysql.jdbc.Driver");
conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/kk_1",
"root", "MySQL1998" );
ps=conn.prepareStatement("insert into k_table (username,myInfo) values (?,?)");
ps.setString(1,"赵大帅");
//输入文件中的内容:
//ps.setClob(2,new FileReader(new File("E:\\a.txt")));
//输入程序中的字符串,这里不能直接使用String,因为DLOB需要的是流
ps.setClob(2,new BufferedReader(new InputStreamReader(new ByteArrayInputStream("zyk is beautiful".getBytes()))));
ps.execute();
System.out.println("OK");

在使用CLOB是出现异常:

Exception in thread "main" java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.isClosed

解决方法:更新connector包。

使用CLOB查询指定的数据:

import java.io.*;
import java.sql.*; public class TestCLOB {
public static void main(String[] args) {
PreparedStatement ps=null;
Connection conn=null;
ResultSet rs=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/kk_1",
"root", "MySQL1998" );
ps=conn.prepareStatement("select * from k_table where id=?");
ps.setInt(1,60010);
rs=ps.executeQuery();
while(rs.next()){
Clob c=rs.getClob("myInfo");
Reader reader=c.getCharacterStream();
int temp=0;
while((temp=reader.read())!=-1){
System.out.print((char) temp); }
}
System.out.println("OK");

BLOB:用于存储大量的二进制文件

try {
Class.forName("com.mysql.jdbc.Driver");
conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/kk_1",
"root", "MySQL1998" );
ps=conn.prepareStatement("insert into k_table (username,headImg) values (?,?)");
ps.setString(1,"赵大帅");
//存入blob
ps.setBlob(2,new FileInputStream("e:/timg.jpg"));
ps.execute();

取出BLOB信息:

public class TestCLOB {
public static void main(String[] args) {
PreparedStatement ps=null;
Connection conn=null;
ResultSet rs=null;
//Reader reader=null;
InputStream inputStreamReader=null;
OutputStream outputStream=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/kk_1",
"root", "MySQL1998" );
//去除BLOB
ps=conn.prepareStatement("select * from k_table where id=?");
ps.setInt(1,60011);
rs=ps.executeQuery();
while(rs.next()){
Blob blob=rs.getBlob("headImg");
inputStreamReader=blob.getBinaryStream();
outputStream=new FileOutputStream("e:/aaa.jpg");
int temp=0;
while((temp=inputStreamReader.read())!=-1){
outputStream.write(temp);
} }

BATCH、事务、CLOB、BLOB的更多相关文章

  1. MyBatis(3.2.3) - Handling the CLOB/BLOB types

    MyBatis provides built-in support for mapping CLOB/BLOB type columns. Assume we have the following t ...

  2. mybatis 处理CLOB/BLOB类型数据

    BLOB和CLOB都是大字段类型. BLOB是按二进制来存储的,而CLOB是可以直接存储文字的. 通常像图片.文件.音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去.文章或者是较长的文字 ...

  3. myBatis之Clob & Blob

    1. 表结构 1.1 在Mysql中的数据类型,longblob  -->  blob, longtext --> clob 2. 配置文件, 请参考  myBatis之入门示例 3. L ...

  4. 深入浅出JDBC-操作时间与大对象(Clob/Blob)

    一.时间(Date.Time.Timestamp) java.sql.Date/java.sql.Time/java.sql.Timestamp extends java.util.Date publ ...

  5. struts2前端页面读取Clob/BLOB

    在通过Struts2标签显示对象的Clob属性值的时候.显示的并非CLOB或者BLOB的内容,而是显示的toString方法的值 比如我在实体中的注解为: @Lob @Column(name = &q ...

  6. Oracle jdbc 插入 clob blob

    Oracle 使用 clob 与 blob 插入一些比较庞大的文本或者文件,JDBC 插入时 也比较简单 表结构 CREATE TABLE test_info ( user_id int NOT NU ...

  7. JDBC 复习3 存取Oracle大数据 clob blob

    1 目录结构记得导包咯 mysql oracle 2 代码,DBUtil工具类见前面的随笔博文 package dbex.mysql; import java.io.BufferedReader; i ...

  8. oracle clob blob dblink

    Create global temporary table temp on commit preserve rows as select * from abc@xxx select * from te ...

  9. oracle对大对象类型操作:blob,clob,nclob

     1.基本介绍 Oracle和plsql都支持lob(large object) 类型,用来存储大数量数据,如图像文件,声音文件等.Oracle 9i realse2支持存储最大为4g的数据,or ...

  10. 使用 hibernate 存取大对象数据类型(clob和blob)

    数据库表如下: book表 id 该表的主键.number类型. photo 代表图书的图片,blob类型. description 图书的描述,clob类型. 使用 hibernate3 往 boo ...

随机推荐

  1. 跨域访问技术CORS(Cross-Origin Resource Sharing)简介

    为什么要用CORS? CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 它允许浏览器向跨源服务器,发出XMLHttp ...

  2. UE4 材质编辑

    1.颜色反转(纹理颜色白变黑,黑变白)

  3. Sql 无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "Chinese_PRC_90_CI_AI" 之间的排序规则冲突

    导致问题原因为创建时,表所使用的排序规则不一致 解决办法: 在对比条件后增加 collate Chinese_PRC_90_CI_AI 的转义即可 如: where test1.FieldName = ...

  4. virtualenvwrappers pipreqs 踩坑

    virtualenvwrappers 1.安装 pip install virtualenvwrapper 在~/.bashrc 中写入 export WORKON_HOME=~/.virtualen ...

  5. miniui的联动列表

    function OnCellBeginEdit(e) { var grid = e.sender; var column = e.column; if (!column.parentfield) { ...

  6. 谷歌浏览器可以google了

    做为一个开发者好多疑问点或者难点大多数时间 都在进行百度,百度也能解决问题,但是呢如果让我能够google呢?我肯定会优先google的,这里面能够搜到一些国外技术人的文章可供参考. 下面是一个能够支 ...

  7. 常用git的命令

    常用git的命令 详解git fetch与git pull的区别 Git放弃本地所有修改,强制更新: git fetch --all git reset --hard origin/master 说明 ...

  8. sql语句可以截取指定字段后面的字符串

    select id,substring(Memo,charindex('数量',Memo)+3,len(Memo)-charindex('数量',Memo)) from trace where Mem ...

  9. LAB1 partIV

    PartIV 实现 处理worker 失败情况. worker 处理失败,master 应该重新分配该任务给其他的worker 处理. rpc 失败情况复杂,可能worker 结果回应丢失了,也有可能 ...

  10. PAT 乙级 1080 MOOC期终成绩 (25 分)

    1080 MOOC期终成绩 (25 分) 对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分的 ...