导航菜单
路很长,又很短
博主信息
昵   称:Cocodroid ->关于我
Q     Q:2531075716
博文数:360
阅读量:2225670
访问量:259911
至今:
×
云标签 标签球>>
云标签 - Su的技术博客
博文->>首页 博主的更多博文>>
JDBC之大数据内容的传输
Tags : jdbc,大数据发表时间: 2014-12-12 22:40:17

什么是大数据内容?

在数据库中,有一条一条的记录,记录中很多字段都是几个字符就够的,假如现在要把一部小说存入数据库,这本小说当然不是几个字符组成,而是由几万字组成,这本小说的数据我们就可以说是大数据,生活中当然有各种各样的大数据:电影,音乐,图片等等。。。

大字符数据内容操作

大字符内容:通常是指很长的字符类型的文件,例如小说,故事等等,内容有字符组成。

下面说明一下MySQL与Oracle中的大数据类型

数据种类 数据大小 MySQL Oracle
字符 char,varchar varchar2
  text/longtext clob
字节 bit,blob,longblob

blob

1.把大字符数据存进数据库(把一个文本的数据存进MySQL中的text类型字段)

    @Test
        public void writeInDB() throws Exception {
            //获取连接
            connection = sqlUtil.getconnection();
            
            //获取对象
            PreparedStatement preparedStatement = 
                    connection.prepareStatement("insert into book values(?)");
            
            //准备一个Reader用于读取本地文件
            Reader reader = new FileReader(new File("e:/test.txt"));
            
            //设置大数据参数
            preparedStatement.setClob(1, reader);
            
            //执行SQL语句
            preparedStatement.executeUpdate();
            
            //关闭资源
            reader.close();
            sqlUtil.close(preparedStatement, connection);
        }

2.从数据库把大字符文件读入到本地

    @Test
        public void readFromDB() throws Exception
        {
            //获取连接
            connection = sqlUtil.getconnection();
            
            //创建对象
            PreparedStatement preparedStatement = 
                    connection.prepareStatement("SELECT content FROM book");
            
            //设置参数
            //preparedStatement.setObject(1, "book");
            
            //获得结果
            ResultSet res = preparedStatement.executeQuery();
            
            //以String的形式获得大字符内容
            while(res.next())
            {
                String content = res.getString("content");
                System.out.println(content);
            }
            
            //关闭资源
            sqlUtil.close(preparedStatement, connection);
        }

获得结果后还有第二种方法:

   @Test
        public void readFromDB() throws Exception
        {
            //获取连接
            connection = sqlUtil.getconnection();
            
            //创建对象
            PreparedStatement preparedStatement = 
                    connection.prepareStatement("SELECT content FROM book");
            
            //设置参数
            //preparedStatement.setObject(1, "book");
            
            //获得结果
            ResultSet res = preparedStatement.executeQuery();
                    
            FileWriter fileWriter = new FileWriter(new File("d:/11021.txt"));
            //利用Clob对象
            if(res.next())
            {
                Clob clob = res.getClob("content");
                Reader reader = clob.getCharacterStream();
                
                //然后把Reader写入到本地文件中
                char[] cr = new char[1024];
                int len = 0;
                while((len = reader.read(cr))!=-1)
                {
                    fileWriter.write(cr, 0, len);
                }
                reader.close();
            }
                
            //关闭资源
            fileWriter.close();
            sqlUtil.close(preparedStatement, connection);
        }
       以上就是对大字符文件的读入与写出~下面我们示范来对大字节文件的操作~


    4.把大字节文件写入数据库

   @Test
    public void writeInDB() throws Exception {
        //获取连接
        connection = sqlUtil.getconnection();
        
        //获取对象
        PreparedStatement preparedStatement = 
                connection.prepareStatement("insert into book values(?,?)");
        
        //准备一个InputStream用于读取本地文件
        InputStream in = new FileInputStream(new File("f:/computer.jpg"));
        
        //设置大数据参数
        preparedStatement.setObject(1, 1);
        preparedStatement.setBlob(2, in);
        //也可以使用这个
        //preparedStatement.setBinaryStream(2, in);
        
        //执行SQL语句
        preparedStatement.executeUpdate();
        
        //关闭资源
        in.close();
        sqlUtil.close(preparedStatement, connection);
    }

    5.从数据库把大字节文件读取到本地 

    @Test
    public void readFromDB() throws Exception
    {
        //获取连接
        connection = sqlUtil.getconnection();
        
        //创建对象
        PreparedStatement preparedStatement = 
                connection.prepareStatement("SELECT content FROM book where id=?");
        
        //设置参数
        preparedStatement.setInt(1, 1);
        
        //获得结果
        ResultSet res = preparedStatement.executeQuery();
        
        FileOutputStream out = new FileOutputStream(new File("d:/999.jpg"));
        //利用Blob对象
        if(res.next())
        {
            //Blob blob = res.getBlob("content");
            //InputStream in =  blob.getBinaryStream();//这样也行
            
            InputStream in = res.getBinaryStream("content");
            //然后把Reader写入到本地文件中
            byte[] buf = new byte[1024];
            int len = 0;
            while((len = in.read(buf))!=-1)
            {
                out.write(buf, 0, len);
            }
            in.close();
            out.close();
        }        
        //关闭资源        
        sqlUtil.close(preparedStatement, connection);
    }

   

     学习之所以会想睡觉,是因为那是梦开始的地方。



转自:白Rime http://www.cnblogs.com/vmax-tam/p/4153996.html

打赏
打赏
关注公众号
公众号
类别:DB| 阅读(2499)| 赞 (0)
上一篇 : Spring、SpringMVC、Shiro面试题
下一篇: log4j将记录日志保存到数据库
评论
暂无评论!
发表评论
昵  称:

验证码:

内  容:

    同时赞一个 赞

推荐文章