blob与string类型的相互转换

package com.coci.test2;

import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import oracle.sql.BLOB;

/**
 * 
 * @author Coci
 *
 */
public class TestBlob {

	public static void main(String[] args) {

		// blob内存放的是字节数组
		// String 的getBytes方法获得该字符串的字节数组(注意编码),然后存入blob即可
		String blobStr = "blob";
		byte[] bytes = null;
		try {
			bytes = blobStr.getBytes("utf-8");
			System.out.println("===" + bytes);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}

		instertData(bytes);

		// 从数据库中读取Blob类型数据后,要转换成String类型,即转换成InputStream,再从InputStream转成byte[],再到String即可。
		// blob转换成String
//		String result = "";
//		try {
//			ByteArrayInputStream msgContent = (ByteArrayInputStream) blob
//					.getBinaryStream();
//			byte[] byte_data = new byte[msgContent.available()];
//			msgContent.read(byte_data, 0, byte_data.length);
//			result = new String(byte_data);
//		} catch (SQLException e) {
//			e.printStackTrace();
//		}
	}

	@SuppressWarnings("deprecation")
	public static void instertData(byte[] value) {
		// TODO Auto-generated method stub
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			String url = "jdbc:oracle:thin:@10.211.19.71:1521:orcl";
			String username = "yst";
			String password = "yst";
			Connection con = DriverManager.getConnection(url, username,
					password);
			con.setAutoCommit(false);
			String sql1 = "insert into testcoci(id,name) values('88',empty_blob())";

			Statement statement = con.createStatement();
			boolean b2 = statement.execute(sql1);
			System.out.println("第一次===" + b2);

			String sql2 = "select name from testcoci where id=88 for update";
			PreparedStatement stmt = con.prepareStatement(sql2);
			ResultSet rs = stmt.executeQuery();
			OutputStream outStream = null;
			if (rs.next()) {

				System.out.println("进来了");
				BLOB blob = (BLOB) rs.getBlob(1);
				System.out.println("数据库  blob =" + blob + "=");
				outStream = blob.getBinaryOutputStream();
				outStream.write(value, 0, value.length);
			}
			outStream.flush();
			outStream.close();
			con.commit();
			con.close();

		} catch (Exception e) {
			System.out.println(e.getCause());
		}
	}
}


 
 

你可能感兴趣的:(java)