Java -- JDBC mysql读写大数据,文本 和 二进制文件

69 篇文章 0 订阅

1. 往mysql中读写字符文本

public class Demo1 {

	/* 创建数据库
	 create database LOBTest;
	 use LOBTest;
	 create table testclob
	 (
	 	id int primary key auto_increment,
	 	resume text
	 );
	  
	 */

	@Test
	public void add() {
		Connection conn = null;
		PreparedStatement st = null;
		ResultSet rs = null;
		try
		{
			conn = JdbcUtils.getConnection();
			String sql = "insert into testclob(resume) values(?)";
			st = conn.prepareStatement(sql);
			String path = Demo1.class.getClassLoader().getResource("db.properties").getPath();
			File file = new File(path);
			FileReader fr = new FileReader(file);
			st.setCharacterStream(1, fr, file.length());
			int num = st.executeUpdate();
			if(num > 0)
				System.out.println("插入成功!!");
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally 
		{
			JdbcUtils.release(conn, st, rs);
		}
	}
	
	@Test
	public void read()
	{
		Connection conn = null;
		PreparedStatement st = null;
		ResultSet rs = null;
		try
		{
			conn = JdbcUtils.getConnection();
			String sql = "select resume from testclob where id = ?";			
			st = conn.prepareStatement(sql);
			st.setInt(1, 2);
			rs = st.executeQuery();
			if(rs.next())
			{
				Reader reader = rs.getCharacterStream("resume");
				FileWriter fw = new FileWriter("write.txt");
				char[] buffer = new char[1024];
				int len = 0;
				while( (len=reader.read(buffer)) > 0)
				{
					fw.write(buffer, 0, len);
				}
				fw.close();
				reader.close();				
			}
			
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally 
		{
			JdbcUtils.release(conn, st, rs);
		}		
	}

}

2. 往mysql中读写二进制文件

public class Demo2 {
	
	/*
	 create table testblob
	 (
	 	id int primary key auto_increment,
	 	image blob
	 );
	 */
	
	@Test
	public void add()
	{
		Connection conn = null;
		PreparedStatement st = null;
		ResultSet rs = null;
		try
		{
			conn = JdbcUtils.getConnection();
			String sql = "insert into testblob(image) values(?)";
			st = conn.prepareStatement(sql);
			
			String path = Demo1.class.getClassLoader().getResource("1.JPG").getPath();
			File file = new File(path);
			FileInputStream sf = new FileInputStream(file);
			st.setBinaryStream(1, sf, file.length());
			int num  = st.executeUpdate();
			if(num > 0)
				System.out.println("插入成功!!");
			sf.close();				
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally 
		{
			JdbcUtils.release(conn, st, rs);
		}
	}
	
	@Test
	public void read()
	{
		Connection conn = null;
		PreparedStatement st = null;
		ResultSet rs = null;
		try
		{
			conn = JdbcUtils.getConnection();
			String sql = "select image from testblob where id = ?";			
			st = conn.prepareStatement(sql);
			st.setInt(1, 1);
			rs = st.executeQuery();
			if(rs.next())
			{
				InputStream is = rs.getBinaryStream("image");
				byte[] buffer = new byte[1024];
				int len = 0;
				FileOutputStream fos = new  FileOutputStream("1_back.JPG");
				while( (len=is.read(buffer))>0 )
				{
					fos.write(buffer, 0, len);
				}
				fos.close();
				is.close();
			}							
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally 
		{
			JdbcUtils.release(conn, st, rs);
		}
	}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值