时间:2021-07-01 10:21:17 帮助过:4人阅读
CLOB:用于存储大文本
BLOB:用于存储二进制数据,例如图像、声音、二进制文件
在mysql中,只有BLOB,没有CLOB,mysql存储大文本用TEXT
TEXT 分为:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT
BLOB 分为:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB
取值范围如下图:
下面来看具体的代码实现:
- <span style="color: #008080;"> 1</span> <span style="color: #0000ff;">package</span><span style="color: #000000;"> com.cream.ice.jdbc;
- </span><span style="color: #008080;"> 2</span>
- <span style="color: #008080;"> 3</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.File;
- </span><span style="color: #008080;"> 4</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.FileNotFoundException;
- </span><span style="color: #008080;"> 5</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.FileReader;
- </span><span style="color: #008080;"> 6</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.FileWriter;
- </span><span style="color: #008080;"> 7</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.Reader;
- </span><span style="color: #008080;"> 8</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.Writer;
- </span><span style="color: #008080;"> 9</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.Connection;
- </span><span style="color: #008080;">10</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.PreparedStatement;
- </span><span style="color: #008080;">11</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.ResultSet;
- </span><span style="color: #008080;">12</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.SQLException;
- </span><span style="color: #008080;">13</span>
- <span style="color: #008080;">14</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> org.junit.Test;
- </span><span style="color: #008080;">15</span>
- <span style="color: #008080;">16</span> <span style="color: #008000;">/**</span>
- <span style="color: #008080;">17</span> <span style="color: #008000;"> * 大文本数据操作
- </span><span style="color: #008080;">18</span> <span style="color: #008000;"> *
- </span><span style="color: #008080;">19</span> <span style="color: #008000;"> * 假设数据库中已存在表test:
- </span><span style="color: #008080;">20</span> <span style="color: #008000;"> * create table test(
- </span><span style="color: #008080;">21</span> <span style="color: #008000;"> * id int primary key,
- </span><span style="color: #008080;">22</span> <span style="color: #008000;"> * content longtext
- </span><span style="color: #008080;">23</span> <span style="color: #008000;"> * );
- </span><span style="color: #008080;">24</span> <span style="color: #008000;"> *
- </span><span style="color: #008080;">25</span> <span style="color: #008000;"> * </span><span style="color: #808080;">@author</span><span style="color: #008000;"> ice
- </span><span style="color: #008080;">26</span> <span style="color: #008000;"> *
- </span><span style="color: #008080;">27</span> <span style="color: #008000;">*/</span>
- <span style="color: #008080;">28</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> ClobDemo {
- </span><span style="color: #008080;">29</span>
- <span style="color: #008080;">30</span> Connection connection = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
- </span><span style="color: #008080;">31</span> PreparedStatement statement = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
- </span><span style="color: #008080;">32</span> ResultSet resultSet=<span style="color: #0000ff;">null</span><span style="color: #000000;">;
- </span><span style="color: #008080;">33</span>
- <span style="color: #008080;">34</span> <span style="color: #000000;"> @Test
- </span><span style="color: #008080;">35</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> add(){
- </span><span style="color: #008080;">36</span> <span style="color: #0000ff;">try</span><span style="color: #000000;"> {
- </span><span style="color: #008080;">37</span> connection=<span style="color: #000000;">JdbcUtils.getConnection();
- </span><span style="color: #008080;">38</span> statement=connection.prepareStatement("insert into test (id,content) values (?,?)"<span style="color: #000000;">);
- </span><span style="color: #008080;">39</span> statement.setInt(1, 1<span style="color: #000000;">);
- </span><span style="color: #008080;">40</span>
- <span style="color: #008080;">41</span> <span style="color: #008000;">//</span><span style="color: #008000;">大文本要使用流的形式。将d:/test.txt内容添加至该记录的content字段</span>
- <span style="color: #008080;">42</span> File file = <span style="color: #0000ff;">new</span> File("d:/test.txt"<span style="color: #000000;">);
- </span><span style="color: #008080;">43</span> Reader reader = <span style="color: #0000ff;">new</span><span style="color: #000000;"> FileReader(file);
- </span><span style="color: #008080;">44</span> <span style="color: #008000;">//</span><span style="color: #008000;">不能使用long的参数,因为mysql根本支持不到那么大的数据,所以没有实现</span>
- <span style="color: #008080;">45</span> statement.setCharacterStream(2, reader, (<span style="color: #0000ff;">int</span><span style="color: #000000;">)file.length());
- </span><span style="color: #008080;">46</span>
- <span style="color: #008080;">47</span> <span style="color: #0000ff;">int</span> i =<span style="color: #000000;"> statement.executeUpdate();
- </span><span style="color: #008080;">48</span> <span style="color: #0000ff;">if</span>(i>0<span style="color: #000000;">)
- </span><span style="color: #008080;">49</span> System.out.println("插入成功"<span style="color: #000000;">);
- </span><span style="color: #008080;">50</span>
- <span style="color: #008080;">51</span> } <span style="color: #0000ff;">catch</span><span style="color: #000000;"> (SQLException e) {
- </span><span style="color: #008080;">52</span> <span style="color: #000000;"> e.printStackTrace();
- </span><span style="color: #008080;">53</span> } <span style="color: #0000ff;">catch</span><span style="color: #000000;"> (FileNotFoundException e) {
- </span><span style="color: #008080;">54</span> <span style="color: #000000;"> e.printStackTrace();
- </span><span style="color: #008080;">55</span> } <span style="color: #0000ff;">finally</span><span style="color: #000000;">{
- </span><span style="color: #008080;">56</span> JdbcUtils.releaseResources(<span style="color: #0000ff;">null</span><span style="color: #000000;">, statement, connection);
- </span><span style="color: #008080;">57</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">58</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">59</span>
- <span style="color: #008080;">60</span> <span style="color: #000000;"> @Test
- </span><span style="color: #008080;">61</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> read(){
- </span><span style="color: #008080;">62</span> <span style="color: #0000ff;">try</span><span style="color: #000000;"> {
- </span><span style="color: #008080;">63</span> connection =<span style="color: #000000;"> JdbcUtils.getConnection();
- </span><span style="color: #008080;">64</span> statement = connection.prepareStatement("select * from test where id=?"<span style="color: #000000;">);
- </span><span style="color: #008080;">65</span> statement.setInt(1, 1<span style="color: #000000;">);
- </span><span style="color: #008080;">66</span>
- <span style="color: #008080;">67</span> <span style="color: #008000;">//</span><span style="color: #008000;">将读取内容保存到E盘上</span>
- <span style="color: #008080;">68</span> resultSet =<span style="color: #000000;"> statement.executeQuery();
- </span><span style="color: #008080;">69</span> <span style="color: #0000ff;">while</span><span style="color: #000000;">(resultSet.next()){
- </span><span style="color: #008080;">70</span> Reader reader = resultSet.getCharacterStream("content"<span style="color: #000000;">);
- </span><span style="color: #008080;">71</span> Writer writer = <span style="color: #0000ff;">new</span> FileWriter("e:/test.txt"<span style="color: #000000;">);
- </span><span style="color: #008080;">72</span> <span style="color: #0000ff;">char</span> buffer[] = <span style="color: #0000ff;">new</span> <span style="color: #0000ff;">char</span>[1024<span style="color: #000000;">];
- </span><span style="color: #008080;">73</span> <span style="color: #0000ff;">int</span> len = -1<span style="color: #000000;">;
- </span><span style="color: #008080;">74</span> <span style="color: #0000ff;">while</span>((len=reader.read(buffer))!=-1<span style="color: #000000;">){
- </span><span style="color: #008080;">75</span> writer.write(buffer, 0<span style="color: #000000;">, len);
- </span><span style="color: #008080;">76</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">77</span> <span style="color: #000000;"> reader.close();
- </span><span style="color: #008080;">78</span> <span style="color: #000000;"> writer.close();
- </span><span style="color: #008080;">79</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">80</span> } <span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e) {
- </span><span style="color: #008080;">81</span> <span style="color: #000000;"> e.printStackTrace();
- </span><span style="color: #008080;">82</span> } <span style="color: #0000ff;">finally</span><span style="color: #000000;">{
- </span><span style="color: #008080;">83</span> <span style="color: #000000;"> JdbcUtils.releaseResources(resultSet, statement, connection);
- </span><span style="color: #008080;">84</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">85</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">86</span> }
- <span style="color: #008080;"> 1</span> <span style="color: #0000ff;">package</span><span style="color: #000000;"> com.cream.ice.jdbc;
- </span><span style="color: #008080;"> 2</span>
- <span style="color: #008080;"> 3</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.FileInputStream;
- </span><span style="color: #008080;"> 4</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.FileOutputStream;
- </span><span style="color: #008080;"> 5</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.InputStream;
- </span><span style="color: #008080;"> 6</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.OutputStream;
- </span><span style="color: #008080;"> 7</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.Connection;
- </span><span style="color: #008080;"> 8</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.PreparedStatement;
- </span><span style="color: #008080;"> 9</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.ResultSet;
- </span><span style="color: #008080;">10</span>
- <span style="color: #008080;">11</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> org.junit.Test;
- </span><span style="color: #008080;">12</span>
- <span style="color: #008080;">13</span> <span style="color: #008000;">/**</span>
- <span style="color: #008080;">14</span> <span style="color: #008000;"> * 大二进制数据操作
- </span><span style="color: #008080;">15</span> <span style="color: #008000;"> *
- </span><span style="color: #008080;">16</span> <span style="color: #008000;"> * 假设数据库中已存在表test:
- </span><span style="color: #008080;">17</span> <span style="color: #008000;"> * create table test(
- </span><span style="color: #008080;">18</span> <span style="color: #008000;"> * id int primary key,
- </span><span style="color: #008080;">19</span> <span style="color: #008000;"> * content longblob
- </span><span style="color: #008080;">20</span> <span style="color: #008000;"> * );
- </span><span style="color: #008080;">21</span> <span style="color: #008000;"> *
- </span><span style="color: #008080;">22</span> <span style="color: #008000;"> * </span><span style="color: #808080;">@author</span><span style="color: #008000;"> ice
- </span><span style="color: #008080;">23</span> <span style="color: #008000;"> *
- </span><span style="color: #008080;">24</span> <span style="color: #008000;">*/</span>
- <span style="color: #008080;">25</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> BlobDemo {
- </span><span style="color: #008080;">26</span> Connection connection = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
- </span><span style="color: #008080;">27</span> PreparedStatement statement = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
- </span><span style="color: #008080;">28</span> ResultSet resultSet=<span style="color: #0000ff;">null</span><span style="color: #000000;">;
- </span><span style="color: #008080;">29</span>
- <span style="color: #008080;">30</span> <span style="color: #000000;"> @Test
- </span><span style="color: #008080;">31</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> add(){
- </span><span style="color: #008080;">32</span> <span style="color: #0000ff;">try</span><span style="color: #000000;"> {
- </span><span style="color: #008080;">33</span> connection=<span style="color: #000000;">JdbcUtils.getConnection();
- </span><span style="color: #008080;">34</span> statement=connection.prepareStatement("insert into test (id,content) values (?,?)"<span style="color: #000000;">);
- </span><span style="color: #008080;">35</span> statement.setInt(1, 1<span style="color: #000000;">);
- </span><span style="color: #008080;">36</span>
- <span style="color: #008080;">37</span> InputStream in = <span style="color: #0000ff;">new</span> FileInputStream("d:/test.jpg"<span style="color: #000000;">);
- </span><span style="color: #008080;">38</span> statement.setBinaryStream(2<span style="color: #000000;">, in, in.available());
- </span><span style="color: #008080;">39</span>
- <span style="color: #008080;">40</span> <span style="color: #0000ff;">int</span> i =<span style="color: #000000;"> statement.executeUpdate();
- </span><span style="color: #008080;">41</span> <span style="color: #0000ff;">if</span>(i>0<span style="color: #000000;">)
- </span><span style="color: #008080;">42</span> System.out.println("插入成功"<span style="color: #000000;">);
- </span><span style="color: #008080;">43</span>
- <span style="color: #008080;">44</span> } <span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e) {
- </span><span style="color: #008080;">45</span> <span style="color: #000000;"> e.printStackTrace();
- </span><span style="color: #008080;">46</span> } <span style="color: #0000ff;">finally</span><span style="color: #000000;">{
- </span><span style="color: #008080;">47</span> JdbcUtils.releaseResources(<span style="color: #0000ff;">null</span><span style="color: #000000;">, statement, connection);
- </span><span style="color: #008080;">48</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">49</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">50</span>
- <span style="color: #008080;">51</span> <span style="color: #000000;"> @Test
- </span><span style="color: #008080;">52</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> read(){
- </span><span style="color: #008080;">53</span> <span style="color: #0000ff;">try</span><span style="color: #000000;"> {
- </span><span style="color: #008080;">54</span> connection =<span style="color: #000000;"> JdbcUtils.getConnection();
- </span><span style="color: #008080;">55</span> statement = connection.prepareStatement("select * from test where id=?"<span style="color: #000000;">);
- </span><span style="color: #008080;">56</span> statement.setInt(1, 1<span style="color: #000000;">);
- </span><span style="color: #008080;">57</span>
- <span style="color: #008080;">58</span> <span style="color: #008000;">//</span><span style="color: #008000;">保存到E盘上</span>
- <span style="color: #008080;">59</span> resultSet =<span style="color: #000000;"> statement.executeQuery();
- </span><span style="color: #008080;">60</span> <span style="color: #0000ff;">while</span><span style="color: #000000;">(resultSet.next()){
- </span><span style="color: #008080;">61</span> InputStream in = resultSet.getBinaryStream("content"<span style="color: #000000;">);
- </span><span style="color: #008080;">62</span> OutputStream out = <span style="color: #0000ff;">new</span> FileOutputStream("e:/test.jpg"<span style="color: #000000;">);
- </span><span style="color: #008080;">63</span> <span style="color: #0000ff;">byte</span> b[] = <span style="color: #0000ff;">new</span> <span style="color: #0000ff;">byte</span>[1024<span style="color: #000000;">];
- </span><span style="color: #008080;">64</span> <span style="color: #0000ff;">int</span> len = -1<span style="color: #000000;">;
- </span><span style="color: #008080;">65</span> <span style="color: #0000ff;">while</span>((len=in.read(b))!=-1<span style="color: #000000;">){
- </span><span style="color: #008080;">66</span> out.write(b, 0<span style="color: #000000;">, len);
- </span><span style="color: #008080;">67</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">68</span> <span style="color: #000000;"> out.close();
- </span><span style="color: #008080;">69</span> <span style="color: #000000;"> in.close();
- </span><span style="color: #008080;">70</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">71</span> } <span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e) {
- </span><span style="color: #008080;">72</span> <span style="color: #000000;"> e.printStackTrace();
- </span><span style="color: #008080;">73</span> } <span style="color: #0000ff;">finally</span><span style="color: #000000;">{
- </span><span style="color: #008080;">74</span> <span style="color: #000000;"> JdbcUtils.releaseResources(resultSet, statement, connection);
- </span><span style="color: #008080;">75</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">76</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">77</span> }
这里使用了我上一篇jdbc基础中的JdbcUtils工具类,同时也使用了单元测试来测试两个成员方法,代码已亲测可运行。
jdbc基础 (三) 大文本、二进制数据处理
标签: