JDBC 處理CLob和Blob型別資料
在mysql資料庫中長文字Text型別的資料不能直接賦值給Java.lang.String
1、向資料庫寫入二進位制資料
package org.bdqn.Ch01;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
*
* @描述: JDBC 處理二進位制資料型別
* @作者:劉運發
* @建立時間:2018年3月30日 上午11:41:45
* @版本:V1.0
*/
public class TestBlob {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
Reader r = null;
try {
// 載入驅動類
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/OA", "root", "root");
ps = conn
.prepareStatement("insert into UserInfo (username,myInfo,headImg) values (?,?,?) ");
ps.setObject(1, "王欣");
// 將程式中的符串輸入到資料庫的CLOB欄位中
ps.setClob(2, new BufferedReader(new InputStreamReader(
new ByteArrayInputStream("王欣,畢業於南京郵電大學, 深圳市點石軟體有限公司及深圳市快播科技有限公司創始人[1] ,曾任深圳市龍脈資訊股份有限公司下屬電信合資公司副總經理、深圳市點石軟體有限公司CEO、上海盛大網路發展有限公司SDO部門助理總監、 深圳市快播科技有限公司 CEO等職".getBytes()))));
/* 將文字檔案內容直接輸入到資料庫中
ps.setClob(2, new FileReader(new File("h:/a.txt")));
*/
// 將二進位制大檔案寫入資料庫
ps.setBlob(3, new FileInputStream("h:/wangxin.png"));
int i = ps.executeUpdate();
if (i > 0) {
System.out.println("新增成功");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (r != null) {
r.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
2、從資料庫中讀取二進位制資料
package org.bdqn.Ch01;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.sun.corba.se.spi.orbutil.fsm.Input;
/**
*
* @描述: JDBC 處理二進位制資料型別
* @作者:劉運發
* @建立時間:2018年3月30日 上午11:41:45
* @版本:V1.0
*/
public class TestBlob {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
Reader r = null;
try {
// 載入驅動類
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/OA", "root", "root");
// 從資料庫讀取二進位制資料
ps = conn.prepareStatement("select * from UserInfo where userId=?");
ps.setObject(1, 5);
rs = ps.executeQuery();
while(rs.next()){
// 通過I/O流進行型別的轉換
Blob b = rs.getBlob("headImg");
InputStream is = b.getBinaryStream();
FileOutputStream os = new FileOutputStream("h:/CopyMyHeadImg.jpg");
int temp = 0;
// 寫入指定位置
while((temp=is.read())!=-1){
os.write(temp);
}
Clob c = rs.getClob("myInfo");
// 將clob轉換成位元組流
r = c.getCharacterStream();
int temp1 = 0;
// IO 讀取
while ((temp1 = r.read()) != -1) {
System.out.print((char) temp);
}
/*
clob提供了直接轉換成String的方法
String content= c.getSubString(1,(int)c.length);
*/
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (r != null) {
r.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
1、向資料庫寫入二進位制資料
package org.bdqn.Ch01;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
*
* @描述: JDBC 處理二進位制資料型別
* @作者:劉運發
* @建立時間:2018年3月30日 上午11:41:45
* @版本:V1.0
*/
public class TestBlob {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
Reader r = null;
try {
// 載入驅動類
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/OA", "root", "root");
ps = conn
.prepareStatement("insert into UserInfo (username,myInfo,headImg) values (?,?,?) ");
ps.setObject(1, "王欣");
// 將程式中的符串輸入到資料庫的CLOB欄位中
ps.setClob(2, new BufferedReader(new InputStreamReader(
new ByteArrayInputStream("王欣,畢業於南京郵電大學, 深圳市點石軟體有限公司及深圳市快播科技有限公司創始人[1] ,曾任深圳市龍脈資訊股份有限公司下屬電信合資公司副總經理、深圳市點石軟體有限公司CEO、上海盛大網路發展有限公司SDO部門助理總監、 深圳市快播科技有限公司 CEO等職".getBytes()))));
/* 將文字檔案內容直接輸入到資料庫中
ps.setClob(2, new FileReader(new File("h:/a.txt")));
*/
// 將二進位制大檔案寫入資料庫
ps.setBlob(3, new FileInputStream("h:/wangxin.png"));
int i = ps.executeUpdate();
if (i > 0) {
System.out.println("新增成功");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (r != null) {
r.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
2、從資料庫中讀取二進位制資料
package org.bdqn.Ch01;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.sun.corba.se.spi.orbutil.fsm.Input;
/**
*
* @描述: JDBC 處理二進位制資料型別
* @作者:劉運發
* @建立時間:2018年3月30日 上午11:41:45
* @版本:V1.0
*/
public class TestBlob {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
Reader r = null;
try {
// 載入驅動類
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/OA", "root", "root");
// 從資料庫讀取二進位制資料
ps = conn.prepareStatement("select * from UserInfo where userId=?");
ps.setObject(1, 5);
rs = ps.executeQuery();
while(rs.next()){
// 通過I/O流進行型別的轉換
Blob b = rs.getBlob("headImg");
InputStream is = b.getBinaryStream();
FileOutputStream os = new FileOutputStream("h:/CopyMyHeadImg.jpg");
int temp = 0;
// 寫入指定位置
while((temp=is.read())!=-1){
os.write(temp);
}
Clob c = rs.getClob("myInfo");
// 將clob轉換成位元組流
r = c.getCharacterStream();
int temp1 = 0;
// IO 讀取
while ((temp1 = r.read()) != -1) {
System.out.print((char) temp);
}
/*
clob提供了直接轉換成String的方法
String content= c.getSubString(1,(int)c.length);
*/
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (r != null) {
r.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (ps != null) {
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
相關文章
- JavaWeb——JDBC八股文、JSBC使用儲存過程、儲存函式、處理CLOB/BLOB型別JavaWebJDBCJS儲存過程儲存函式型別
- 通過配置hibernate方言包+GBase8s jdbc實現clob、blob、text、byte大物件資料型別操作JDBC物件資料型別
- 關於Oracle的BLOB和CLOBOracle
- MySQL 中 blob 和 text 資料型別詳解MySql資料型別
- Oracle BLOB型別的資料如何檢視和下載?Oracle型別
- 7.82 EMPTY_BLOB, EMPTY_CLOB
- PHP 操作 mysql blob 資料型別的欄位PHPMySql資料型別
- 05 Windows批處理中的字串和布林資料型別Windows字串資料型別
- 06 Windows批處理之整數和浮點資料型別Windows資料型別
- ETLCloud支援的資料處理型別包括哪些?Cloud型別
- JS指令碼批次處理TS資料型別JS指令碼資料型別
- JDBC連線批量處理資料入庫JDBC
- python 資料處理(字串擷取、()\[]\{}資料型別、{}字典資料取值)Python字串資料型別
- Mysql BLOB、BLOB與TEXT區別及效能影響、將BLOB型別轉換成VARCHAR型別MySql型別
- 如何處理http返回型別為206的資料HTTP型別
- js資料型別之基本資料型別和引用資料型別JS資料型別
- JNI開發流程與引用資料型別的處理資料型別
- 第四章 Caché JSON 處理資料型別JSON資料型別
- 區別值型別資料和引用型別資料型別
- 如何檢視ORACLE的LOB(BLOB和CLOB)物件佔用的大小Oracle物件
- Oracle blob型別資料轉換成 base64編碼Oracle型別
- 資料清洗和資料處理
- JAVA中基本資料型別和引用資料型別Java資料型別
- Lazarus中對mysql資料庫Blob型別進行讀寫例子MySql資料庫型別
- [20231013]CLOB型別的編碼問題.txt型別
- PHP 資料型別之檢視和判斷資料型別PHP資料型別
- 資料型別和運算子資料型別
- Java 資料型別和 MySql 資料型別對應一覽表JavaMySQL 資料型別
- 程式錯誤型別及其處理型別
- 簡單資料型別和引用資料型別對應棧和堆示意圖資料型別
- 資料預處理和特徵工程特徵工程
- JDBC當中的批處理JDBC
- Python資料處理(二):處理 Excel 資料PythonExcel
- 幾個例子理解不同資料型別的堆疊記憶體處理資料型別記憶體
- 資料型別: 資料型別有哪些?資料型別
- size_t 資料型別的好處資料型別
- JS專題之資料型別和型別檢測JS資料型別
- 資料型別和字符集資料型別