对特种类型数据在数据库中的读取和存储
2009-09-15 15:06
453 查看
今天需要完成一个功能将一个excel文件存入sql数据库 查阅无数资料 没有直接的方法
不过却有不少针对图片的操作 是将图片转换成二进制数据 然后存储进数据库
所谓数据的类型只是针对使用者而言的,数据在内存中只有一种格式 就是二进制格式 存储应该也差不多 我将一个文件转换成二进制存储进数据库 等需要的时候 再用二进制读出来 恢复原来的格式 不就可以了么
以下是实现:
代码明显有很多问题 不过 暂时只能以完成功能为本 。
欢迎拍砖 两个问题需要解决
不过却有不少针对图片的操作 是将图片转换成二进制数据 然后存储进数据库
所谓数据的类型只是针对使用者而言的,数据在内存中只有一种格式 就是二进制格式 存储应该也差不多 我将一个文件转换成二进制存储进数据库 等需要的时候 再用二进制读出来 恢复原来的格式 不就可以了么
以下是实现:
package FileUtil; import java.io.BufferedOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class InsertFile { private String filename ; private File file; public File getFile() { return file; } public void setFile(File file) { this.file = file; } public String getFilename() { return filename; } public void setFilename(String filename) { this.filename = filename; } public static void main(String s[]){ File file = new File("c://test//扬帆教学管理系统 v1.0 + 源码.rar") ; new InsertFile().writeFile(file); String sql = "select excel FROM excel"; String filename = "c://test1//扬帆教学管理系统 v1.0 + 源码.rar"; new InsertFile().readFile(sql,filename); } public void writeFile(File file){ Connection conn =null; try{ Class.forName(MvcProperties.dbDriverName); conn=DriverManager.getConnection(MvcProperties.url,MvcProperties.user,MvcProperties.password); String sql = "Insert into excel (excel) values (?)"; PreparedStatement pstmt = conn.prepareStatement(sql) ; FileInputStream fis = new FileInputStream(file); pstmt.setBinaryStream(1, fis, (int)file.length()); pstmt.executeUpdate(); pstmt.close(); fis.close(); if(conn!=null && !conn.isClosed() ){ conn.close(); System.out.println("写入"+file.getName()+"成功~!"); } }catch(ClassNotFoundException e){ System.out.println("文件未找到!"); e.printStackTrace(); } catch(SQLException se){ System.out.println("SQL语句异常"); se.printStackTrace(); }catch(FileNotFoundException fne){ System.out.println("文件未找到"); fne.printStackTrace(); }catch(IOException ioe){ System.out.println("io异常"); ioe.printStackTrace(); }finally{ try{ if(conn!=null && !conn.isClosed() ){ conn.close(); } }catch(Exception e){ e.printStackTrace(); } } } public void readFile(String sql,String filename){ Connection conn =null; try{ Class.forName(MvcProperties.dbDriverName); conn=DriverManager.getConnection(MvcProperties.url,MvcProperties.user,MvcProperties.password); Statement stmt = conn.createStatement(); ResultSet rs; String strSql = "select excel FROM excel"; InputStream in = null; rs=stmt.executeQuery(strSql); while(rs.next()){ //Windows 系统下存储路径用2个反斜杠 DataOutputStream sos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(filename))); //读出流用getBinaryStream()方法。 in = rs.getBinaryStream("excel"); //用缓存数组逐渐输出流 int len = 0; byte[] b = new byte[1024]; while ((len = in.read(b)) != -1) { sos.write(b,0,len); } sos.close(); in.close(); } rs.close(); if(conn!=null && !conn.isClosed()){ conn.close(); System.out.println("读出到"+filename+"成功~!"); } }catch(ClassNotFoundException e){ System.out.println("文件未找到!"); e.printStackTrace(); } catch(SQLException se){ System.out.println("SQL语句异常"); se.printStackTrace(); }catch(FileNotFoundException fne){ System.out.println("文件未找到"); fne.printStackTrace(); }catch(IOException ioe){ System.out.println("io异常"); ioe.printStackTrace(); }finally{ try{ if(conn!=null && !conn.isClosed() ){ conn.close(); } }catch(Exception e){ e.printStackTrace(); } } } }
代码明显有很多问题 不过 暂时只能以完成功能为本 。
欢迎拍砖 两个问题需要解决
相关文章推荐
- 从Oracle中数据库中读取以Blob类型存储的图片显示在jsp页面中
- opencv中视频数据类型及视频帧的读取与存储
- Atitit.各种 数据类型 ( 树形结构,表形数据 ) 的结构与存储数据库 attilax 总结
- VA利用反射进行数据库的读取免数据类型转换
- C#如何从数据库里读取iamge类型的数据,让其显示在pictureBox里(整理)
- oracle blob数据类型存储读取的小例子
- 数据库复习--三范式、基本数据类型、完整性、存储过程
- 如何将图片以Image类型存储到数据库 如何从数据库中读取Image类型的字段
- 存储timestamp的数据类型到数据库中的几行代码
- 实验五 flash的小数据类型存储与读取
- Blob数据类型在数据库中的存储
- linq自数据库中读取数据,返回匿名类型对象,以供前端使用
- 数据库中Image字段存储读取数据
- 安装MySql+连接数据库+读取数据并存储成dataframe(python3.6)
- 如何将数据库中的数据存储成各种文件类型
- LOB 数据类型节点的数据库 ID 10 (页 (1:24562),槽 0)不存在。这通常是由于可以读取数据页上未提交的数据的事务所致。请运行 DBCC CHECKTABLE。
- 如何将图片以Image类型存储到数据库 (asp.net) 如何从数据库中读取Image类型的字段(asp.net)
- 关于数据库image数据类型数据的读取和写入
- SQL C# nvarchar类型转换为int类型 多表查询的问题,查询结果到新表,TXT数据读取到控件和数据库,生成在控件中的数据如何存到TXT文件中
- 关于数据库BLOB类型的存储和读取