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. 利用Python代码编写计算器小程序

    import tkinter import tkinter.messagebox import math class JSQ: def __init__(self): #创建主界面 self.root ...

  2. 使用 ReSharper,输入即遵循 StyleCop 的代码格式化规范

    使用 ReSharper,输入即遵循 StyleCop 的代码格式化规范 StyleCop 可以帮助强制执行代码格式化规范,ReSharper 可以帮助你更高效地编写代码.把两者结合起来,你便能高效地 ...

  3. 天融信防火墙NGFW4000,无法进入web管理和community属性查看

    1.system config save  //配置保存 2.system config reset //清除配置(恢复出厂设置) 3.pf service add name webui area a ...

  4. 学习笔记CB005:关键词、语料提取

    关键词提取.pynlpir库实现关键词提取. # coding:utf-8 import sys import importlib importlib.reload(sys) import pynlp ...

  5. DevExpress 控件汉化代码和使用方法

    DevExpress 第三方控件汉化的全部代码和使用方法   DevExpress.XtraEditors.Controls  此控件包中包含的控件最多,包括文本框,下拉列表,按钮,等等        ...

  6. IMPALA部署和架构(一)

    IMPALA部署和架构(一)  一,概要 因公司业务需求,需要一个查询引擎满足快速查询TB级别的数据,所以我们找到了presto和impala,presto在前面讲过今天只说impala,impala ...

  7. python 基础之注释变量常量

    一:注释 注释: 就是对代码的解释 方便大家阅读代码 1.注释的分类 (1)单行注释 #  在python中在行首添加一个#号就将这一行进行注释 #单行注释: 用#开头,后面跟上任意字符串 #pyth ...

  8. FileUpload上传

    单文件上传: ASPX: <div> <!-- 文件上传 --> <asp:FileUpload ID="FileUpload1" runat=&qu ...

  9. 部署JupyterLab和pyalgotrade搭建web策略回测环境

    ==========================================================================安装anaconda 3 64位版本cd /optm ...

  10. VS2015 加快编译速度

    在使用VS2015 编译的时候,每次修改工程中的某一个文件,启动调试时,往往都是整个工程都需要重新编译一遍.由于这个工程代码量太大,每次编译完成都需要将近10分钟左右的时间编译.最烦人的时候是当编译完 ...