日期:2014-05-16  浏览次数:20487 次

JDBC实现文件、图片的存储实例
/*
实现的功能:
	用数据库存储文本数据,并且读取出来放在当前项目里
分析:
	难度不是很大,关键是掌握文件流,数据库的操作不是很多,但是文件流的读写比较多

日期:20131003

作者:烟大阳仔

*/

public class Ckb_test {

	public static void main(String[] args) throws SQLException, IOException {
		// TODO Auto-generated method stub
		read();
	}
	static void create() throws SQLException, IOException
	{
		Connection conn=null;
		PreparedStatement prest=null;
		ResultSet resultset=null;
		
		try {
			//2.建立连接
			conn=JdbcUtils.getConnection();
			//单例设计模式
			conn=JdbcUtilsSingle.getInstance().getConnection();
			//3.创建语句
			String sql="insert into ckb_test(text) values(?)";
			prest=conn.prepareStatement(sql);
			File file=new File("src/cn/com/JDBC/JdbcUtils.java");
			Reader reader=new BufferedReader(new FileReader(file));
			prest.setCharacterStream(1, reader, (int)file.length());
			//4.执行语句
			
			int i=prest.executeUpdate();
			reader.close();
			System.out.println("i="+i);
		} finally
		{
			JdbcUtils.free(resultset, prest, conn);
		}
	}
	static void read() throws SQLException, IOException
	{
		Connection conn=null;
		Statement st=null;
		ResultSet resultset=null;
		
		try {
			//2.建立连接
			conn=JdbcUtils.getConnection();
			//单例设计模式
			conn=JdbcUtilsSingle.getInstance().getConnection();
			//3.创建语句
			st=conn.createStatement();
			//4.执行语句
			resultset=st.executeQuery("select text from ckb_test");
			//5.处理结果
			while(resultset.next())
			{
				Clob clob=resultset.getClob(1);
				Reader reader=clob.getCharacterStream();
				//reader=resultset.getCharacterStream(1);
				File file=new File("JdbcUtils.java");
				Writer writer=new BufferedWriter(new FileWriter(file));
				char[] buff=new char[1024];
				for(int i=0;(i=reader.read(buff))>0;)
				{
					writer.write(buff,0,i);
				}
				writer.close();
				reader.close();
			}
			
		} finally
		{
			JdbcUtils.free(resultset, st, conn);
		}
	}

}

----------------------------------------------------------------------
/*
实现的功能:
	用数据库存储图片数据,并且读取出来放在当前项目里
分析:
	难度不是很大,关键是掌握字节流,数据库的操作不是很多,但是文件流的读写比较多,注意更改图片的目录

日期:20131003

作者:烟大阳仔

*/

public class PictureBlob {

	public static void main(String[] args) throws SQLException, IOException {
		read();
	}
	static void create() throws SQLException, IOException
	{
		Connection conn=null;
		PreparedStatement prest=null;
		ResultSet resultset=null;
		
		try {
			//2.建立连接
			conn=JdbcUtils.getConnection();
			//单例设计模式
			conn=JdbcUtilsSingle.getInstance().getConnection();
			//3.创建语句
			String sql="insert into blob_test(big_bit) values(?)";
			prest=conn.prepareStatement(sql);
			File file=new File("C:\\Documents and Settings\\Administrator\\My Documents\\My Pictures\\cxg.jpg");
			InputStream in=new BufferedInputStream(new FileInputStream(file));
			prest.setBinaryStream(1, in, (int)file.length());
			//4.执行语句
			
			int i=prest.executeUpdate();
			in.close();
			System.out.println("i="+i);
		} finally
		{
			JdbcUtils.free(resultset, prest, conn);
		}
		
	}
	
	static void read() throws SQLException, IOException
	{
		Connection conn=null;
		Statement st=null;
		ResultSet resultset=null;
		
		try {
			//2.建立连接
			conn=JdbcUtils.getConnection();
			//单例设计模式
			conn=JdbcUtilsSingle.getInstance().getConnection();
			//3.创建语句
			st=conn.createStatement();
			//4.执行语句
			resultset=st.executeQuery("select big_bit from blob_test");
			//5.处理结果
			while(resultset.next())
			{
				Blob blob=resultset.getBlob(1);
				InputStream in=blob.getBinaryStream();
				//reader=resultset.getCharacterStream(1);
				File file=new File("1.jpeg");
				OutputStream out=new BufferedOutputStream(new FileOutputStream(file));
				byte[] buff=new byte[1024];
				for(int i=0;(i=in.read(buff))>0;)
				{
					out.write(buff,0,i);
				}
				out.close();
				in.close();
			}
			
		} finally
		{
			JdbcUtils.free(resultset, st, conn);
		}
	}
}