用JDBC处理二进制类文件
Posted 浮生缘,半生梦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用JDBC处理二进制类文件相关的知识,希望对你有一定的参考价值。
数据库中可以存储整数、小数、字符,也可以存储音乐视频等文件,这时候我们可以用二进制的方式。
四种不同大小的二进制类型,单位为字节
TinyBlob 255B
Blob 65k
MediumBlob 16M
LongBlob 4G
package jdbc_preparement; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.OutputStream; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; public class text_preparestartment { public static void main(String[] args) { // TODO Auto-generated method stub Connection con=simplecon.getConnection(); String sql="insert into t_user values(null,?,?,null);"; String sql1="insert into t_hobby values(?,?)"; try { PreparedStatement ps=con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); ps.setString(1, "mike"); //插入一组数据 ps.setString(2, "4399"); ps.execute(); ResultSet re=ps.getGeneratedKeys(); //获得主键 re.next(); int n=re.getInt(1); System.out.println("自然增长的序号为"+n); simplecon.close(re); simplecon.close(ps); PreparedStatement ps1=con.prepareStatement(sql1); ps1.setInt(1, n); Blob pic=con.createBlob(); //创建一个二进制类型 OutputStream out=pic.setBinaryStream(1); //返回一个流,流向这个二进制存放处,并设置位置为初始位置1 //读入一个二进制文件 byte[] b; String picname="d:/tupian.jpg"; b=simple_read.readpic(picname); //自定义的读入图片的类 out.write(b);//将图片的二进制写到Blob中 out.flush(); out.close(); ps1.setBlob(2,pic);//将blob写到数据库中 ps1.execute(); simplecon.close(ps1); simplecon.close(con); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
//连接数据库 class simplecon { static Connection con; static Connection getConnection() { try{ con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","数据库名","数据库密码"); }catch(SQLException e){ e.printStackTrace(); } return con; } static void close(AutoCloseable a) { try { a.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
//从文件中读取图片 class simple_read { static byte[] readpic(String a) { byte[] b=null; try { FileInputStream in=new FileInputStream(a); b=new byte[in.available()]; in.read(b); in.close(); System.out.println("ok!"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return b; } }
以上是关于用JDBC处理二进制类文件的主要内容,如果未能解决你的问题,请参考以下文章
当我切换到包含片段的活动时应用程序崩溃(二进制 XML 文件第 10 行:二进制 XML 文件第 10 行:膨胀类片段时出错)
第 7 行的 InflateException 二进制 XML 文件:膨胀类片段时出错
android.view.InflateException:二进制 XML 文件:膨胀类片段时出错