BATCH、事务、CLOB、BLOB
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的更多相关文章
- 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 ...
- mybatis 处理CLOB/BLOB类型数据
BLOB和CLOB都是大字段类型. BLOB是按二进制来存储的,而CLOB是可以直接存储文字的. 通常像图片.文件.音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去.文章或者是较长的文字 ...
- myBatis之Clob & Blob
1. 表结构 1.1 在Mysql中的数据类型,longblob --> blob, longtext --> clob 2. 配置文件, 请参考 myBatis之入门示例 3. L ...
- 深入浅出JDBC-操作时间与大对象(Clob/Blob)
一.时间(Date.Time.Timestamp) java.sql.Date/java.sql.Time/java.sql.Timestamp extends java.util.Date publ ...
- struts2前端页面读取Clob/BLOB
在通过Struts2标签显示对象的Clob属性值的时候.显示的并非CLOB或者BLOB的内容,而是显示的toString方法的值 比如我在实体中的注解为: @Lob @Column(name = &q ...
- Oracle jdbc 插入 clob blob
Oracle 使用 clob 与 blob 插入一些比较庞大的文本或者文件,JDBC 插入时 也比较简单 表结构 CREATE TABLE test_info ( user_id int NOT NU ...
- JDBC 复习3 存取Oracle大数据 clob blob
1 目录结构记得导包咯 mysql oracle 2 代码,DBUtil工具类见前面的随笔博文 package dbex.mysql; import java.io.BufferedReader; i ...
- oracle clob blob dblink
Create global temporary table temp on commit preserve rows as select * from abc@xxx select * from te ...
- oracle对大对象类型操作:blob,clob,nclob
1.基本介绍 Oracle和plsql都支持lob(large object) 类型,用来存储大数量数据,如图像文件,声音文件等.Oracle 9i realse2支持存储最大为4g的数据,or ...
- 使用 hibernate 存取大对象数据类型(clob和blob)
数据库表如下: book表 id 该表的主键.number类型. photo 代表图书的图片,blob类型. description 图书的描述,clob类型. 使用 hibernate3 往 boo ...
随机推荐
- 安装VisualStudio时失败,错误信息安装包失败或证书不在有效期内
本人安装VisualStudio2012的时候,安装失败有:错误信息安装包失败或证书不在有效期内等 网上查找相关信息,得到的答案很少,我重新网上下载同版本软件继续之前的下载,但还是无效 之后我把软件卸 ...
- Spring的由来以及发展
Spring简史: 第一阶段:XML配置在Spring1.x时代,都是使用XML配置Bean,随着项目扩大,我们把XML文件切分成多个配置文件,那时候需要频繁地在开发类和配置文件之间切换 第二阶 ...
- django from表单验证
django from表单验证 实现:表单验证 工程示例: urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from djan ...
- java虚拟机 之 垃圾回收机制
一.如何判断对象已死 垃圾回收器并不是java独有的,垃圾回收器的作用就是回收对象释放内存空间,那么如何判断哪些对象应该被回收呢? 在Java语言中是采用GC Roots来解决这个问题.如果一个对象和 ...
- C#如何调用以管理员身份运行的cmd命令提示符
windows自从vista.win7.win8/8.1以及win10以来,命令行提示符分为两种模式,一种是普通用户模式,一种的管理员模式,很多情况下,我们的程序需要在命令提示符(管理员身份)的状况下 ...
- python 基础之python的六大标准数据类型
一:Number 数字类型(int float bool complex) 1.整型: (正整数 0 负整数)#(1)二进制用0b表示intvar = 0b1010print(intvar)pr ...
- wireless
思科的AP分为胖AP和瘦AP,但其实只是AP中的Image不一样而已,硬件都是一样的,胖AP和瘦AP之间可以互相转换.即使你下单的时候下的是胖AP,拿到货要当瘦AP用,转换一下即可. [相互转换] 详 ...
- 剑指offer 6.查找和排序 旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...
- Hbase数据库
1.简介 HBase从诞生至今将近10年,在apache基金会的孵化下,已经变成一个非常成熟的项目,也有许多不同的公司支持着许多不同的分支版本,如cloudra等等. HBase不同于一般的关 ...
- zabbix3.4使用外部邮件报警
打开web页面,找到 管理--报警媒介类型 打开 Email 填写外部邮箱信息 点击更新,这样发件人和邮箱服务器信息定义完成. 添加收件人信息: 接下来创建动作,配置---动作---选触发器 ok 过 ...