博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDBC Item3: LOB(Large objects)
阅读量:6372 次
发布时间:2019-06-23

本文共 1997 字,大约阅读时间需要 6 分钟。

hot3.png

mysql存储大文本采用的是Text,Text和blob分别又分为: 

  • TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT 

  • TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB

一、使用JDBC处理MySQL的大文本

        对于MySQL中的Text类型,可调用如下方法设置

PreparedStatement.setCharacterStream(index, reader, length);//注意length长度须设置,并且设置为int型

  对MySQL中的Text类型,可调用如下方法获取

Reader reader = resultSet. getCharacterStream(String columnLabel);string s = resultSet.getString(String columnLabel);

eg:插入大文本到数据库

Connection conn = null;PreparedStatement st = null;ResultSet rs = null;Reader reader = null;try{    conn = JdbcUtils.getConnection();    String sql = "insert into testclob(resume) values(?)";    st = conn.prepareStatement(sql);    //这种方式获取的路径,其中的空格会被使用“%20”代替    String path = JdbcOperaClob.class.getClassLoader().getResource("data.txt").getPath();    //将“%20”替换回空格    path = path.replaceAll("%20", " ");    File file = new File(path);    reader = new FileReader(file);    st.setCharacterStream(1, reader,(int) file.length());    int num = st.executeUpdate();    if(num>0){        System.out.println("插入成功!!");    }

二、使用JDBC处理MySQL的二进制数据

    对于MySQL中的BLOB类型,可调用如下方法设置

PreparedStatement.setBinaryStream(i, inputStream, length);

    对MySQL中的BLOB类型,可调用如下方法获取

InputStream in  = resultSet.getBinaryStream(String columnLabel);InputStream in  = resultSet.getBlob(String columnLabel).getBinaryStream();

eg:插入二进制文件到数据库

Connection conn = null;PreparedStatement st = null;ResultSet rs = null;        try{    conn = JdbcUtils.getConnection();    String sql = "insert into testblob(image) values(?)";    st = conn.prepareStatement(sql);            //这种方式获取的路径,其中的空格会被使用“%20”代替    String path = JdbcOperaBlob.class.getClassLoader().getResource("01.jpg").getPath();    //将“%20”替换会空格    path = path.replaceAll("%20", " ");    File file = new File(path);    FileInputStream fis = new FileInputStream(file);//生成的流    st.setBinaryStream(1, fis,(int) file.length());                int num = st.executeUpdate();                if(num>0){        System.out.println("插入成功!!");    }

转载于:https://my.oschina.net/u/1020238/blog/610330

你可能感兴趣的文章
AES算法介绍
查看>>
数据库实例: STOREBOOK > 用户 > 编辑 用户: PUBLIC
查看>>
莫比乌斯反演学习【莫比乌斯反演】
查看>>
c#socket编程基础
查看>>
WORKAREA_SIZE_POLICY参数引起的ORA-04030错误
查看>>
C#正则表达式通过HTML提取网页中的图片src
查看>>
myloader恢复mysql数据库示例
查看>>
[20170204]dg环境修改sys口令.txt
查看>>
宏定义
查看>>
[20171117]参数filesystemio_options.txt
查看>>
Git Config(转)
查看>>
解读ASP.NET 5 & MVC6系列(10):Controller与Action
查看>>
docker学习(1) 安装
查看>>
我的友情链接
查看>>
Java集合:Set接口总结
查看>>
linux日志信息
查看>>
本地搭建Discuz论坛系统
查看>>
CSS3 transition动画
查看>>
求大神指导如何操作
查看>>
编译安装pnp是出现RRDs Perl Modules not found 错误
查看>>