  
<div id="snippet_76" class="snippet">
  <h2><a href="/snippets/76-How-to-read-UTF-8-data-from-an-Oracle-BLOB-column-with-Java-and-JDBC" title="How to read UTF-8 data from an Oracle BLOB column with Java and JDBC - Java - oracle, blob, utf-8, java">How to read UTF-8 data from an Oracle BLOB column with Java and JDBC</a></h2>
  <div class="details">
    <a style="background-color: #FFFF94;" href="http://snippets.aktagon.com/languages/59-Java">
      Java</a> posted over 2 years ago by christian
          
  </div>

  <div class="body">
    <p>This example works with Oracle:</p>


	<p><pre class="active4d"><span class="line-numbers">   1 </span> <span class="Storage">private </span><span class="Storage">String</span> <span class="FunctionName">getBlobAsString</span>(<span class="LibraryClassType">Blob</span> blob)
<span class="line-numbers">   2 </span> {
<span class="line-numbers">   3 </span>     <span class="LibraryClassType">StringBuffer</span> result = <span class="Keyword">new</span> <span class="LibraryClassType">StringBuffer</span>();
<span class="line-numbers">   4 </span>     
<span class="line-numbers">   5 </span>     <span class="Keyword">if</span> ( blob <span class="Operator">!=</span> <span class="BuiltInConstant">null</span> ) 
<span class="line-numbers">   6 </span>     {
<span class="line-numbers">   7 </span>         <span class="Storage">int</span> read = <span class="Number">0</span>;
<span class="line-numbers">   8 </span>         <span class="LibraryClassType">Reader</span> reader = <span class="BuiltInConstant">null</span>;
<span class="line-numbers">   9 </span>         <span class="Storage">char</span>[] buffer = <span class="Keyword">new</span> <span class="Storage">char</span>[<span class="Number">1024</span>];
<span class="line-numbers">  10 </span>                                 
<span class="line-numbers">  11 </span>         <span class="Keyword">try</span>
<span class="line-numbers">  12 </span>         {
<span class="line-numbers">  13 </span>             reader = <span class="Keyword">new</span> <span class="LibraryClassType">InputStreamReader</span>(blob.getBinaryStream(), <span class="String"><span class="String">&quot;</span>UTF-8<span class="String">&quot;</span></span>);
<span class="line-numbers">  14 </span> 
<span class="line-numbers">  15 </span>             <span class="Keyword">while</span>((read = reader.read(buffer)) <span class="Operator">!=</span> <span class="Operator">-</span><span class="Number">1</span>) 
<span class="line-numbers">  16 </span>             {
<span class="line-numbers">  17 </span>                 result.append(buffer, <span class="Number">0</span>, read);
<span class="line-numbers">  18 </span>             }
<span class="line-numbers">  19 </span>         }
<span class="line-numbers">  20 </span>         <span class="Keyword">catch</span>(<span class="LibraryClassType">SQLException</span> ex)
<span class="line-numbers">  21 </span>         {
<span class="line-numbers">  22 </span>             <span class="Keyword">throw</span> <span class="Keyword">new</span> <span class="LibraryClassType">RuntimeException</span>(<span class="String"><span class="String">&quot;</span>Unable to read blob data.<span class="String">&quot;</span></span>, ex);
<span class="line-numbers">  23 </span>         }
<span class="line-numbers">  24 </span>         <span class="Keyword">catch</span>(<span class="LibraryClassType">IOException</span> ex)
<span class="line-numbers">  25 </span>         {
<span class="line-numbers">  26 </span>             <span class="Keyword">throw</span> <span class="Keyword">new</span> <span class="LibraryClassType">RuntimeException</span>(<span class="String"><span class="String">&quot;</span>Unable to read blob data.<span class="String">&quot;</span></span>, ex);
<span class="line-numbers">  27 </span>         }
<span class="line-numbers">  28 </span>         <span class="Keyword">finally</span>
<span class="line-numbers">  29 </span>         {
<span class="line-numbers">  30 </span>             <span class="Keyword">try</span> { <span class="Keyword">if</span>(reader <span class="Operator">!=</span> <span class="BuiltInConstant">null</span>) reader.close(); } <span class="Keyword">catch</span>(<span class="LibraryClassType">Exception</span> ex) {};
<span class="line-numbers">  31 </span>         }
<span class="line-numbers">  32 </span>     }
<span class="line-numbers">  33 </span>     
<span class="line-numbers">  34 </span>     <span class="Keyword">return</span> result.toString();
<span class="line-numbers">  35 </span> }
</pre></p>


	<p>Then use the method like this:</p>


	<p><pre class="active4d"><span class="line-numbers">   1 </span> <span class="LibraryClassType">ResultSet</span> resultSet = your <span class="UserDefinedConstant">JDBC</span> result set;
<span class="line-numbers">   2 </span> 
<span class="line-numbers">   3 </span> <span class="LibraryClassType">String</span> utf8 = getBlobAsString(resultSet.getBlob(<span class="String"><span class="String">&quot;</span>xml<span class="String">&quot;</span></span>));
<span class="line-numbers">   4 </span> 
</pre></p>
  </div>

  <div style="font-size: 0.8em;margin:0.5em;">
    
      Tagged <a href="/tags/86-oracle">oracle</a>, <a href="/tags/181-blob">blob</a>, <a href="/tags/182-utf-8">utf-8</a>, <a href="/tags/5-java">java</a>
    
    
  </div>
</div>



  
<div id="snippet_75" class="snippet">
  <h2><a href="/snippets/75-How-to-write-UTF-8-data-to-an-Oracle-BLOB-column-with-Java-and-JDBC" title="How to write UTF-8 data to an Oracle BLOB column with Java and JDBC - Java - oracle, blob, jdbc, java, utf-8">How to write UTF-8 data to an Oracle BLOB column with Java and JDBC</a></h2>
  <div class="details">
    <a style="background-color: #FFFF94;" href="http://snippets.aktagon.com/languages/59-Java">
      Java</a> posted over 2 years ago by christian
          
  </div>

  <div class="body">
    <p>This example works with Oracle:</p>


	<p><pre class="active4d"><span class="line-numbers">   1 </span> <span class="Storage">private </span><span class="Storage">Blob</span> <span class="FunctionName">getBlob</span>(<span class="LibraryClassType">Connection</span> connection, <span class="LibraryClassType">String</span> data)
<span class="line-numbers">   2 </span> {
<span class="line-numbers">   3 </span>   <span class="UserDefinedConstant">BLOB</span> blob = <span class="UserDefinedConstant">BLOB</span>.createTemporary(connection, <span class="BuiltInConstant">true</span>, <span class="UserDefinedConstant">BLOB</span>.<span class="UserDefinedConstant">DURATION_SESSION</span>);
<span class="line-numbers">   4 </span> 
<span class="line-numbers">   5 </span>   <span class="Keyword">try</span>
<span class="line-numbers">   6 </span>   {
<span class="line-numbers">   7 </span>       blob.open(<span class="UserDefinedConstant">BLOB</span>.<span class="UserDefinedConstant">MODE_READWRITE</span>);
<span class="line-numbers">   8 </span>       blob.putBytes(<span class="Number">1</span>, data.getBytes(<span class="String"><span class="String">&quot;</span>UTF-8<span class="String">&quot;</span></span>)); <span class="LineComment"><span class="LineComment">//</span> Consider streaming, if data size is unknown. Note that setBytes doesn't work</span>
<span class="line-numbers">   9 </span>   }
<span class="line-numbers">  10 </span>   <span class="Keyword">catch</span>(<span class="LibraryClassType">UnsupportedEncodingException</span> ex)
<span class="line-numbers">  11 </span>   {
<span class="line-numbers">  12 </span>       <span class="Keyword">throw</span> <span class="Keyword">new</span> <span class="LibraryClassType">RuntimeException</span>(<span class="String"><span class="String">&quot;</span>Unable to get a blob for '<span class="String">&quot;</span></span> <span class="Operator">+</span> data <span class="Operator">+</span> <span class="String"><span class="String">&quot;</span>'<span class="String">&quot;</span></span>, ex);
<span class="line-numbers">  13 </span>   }
<span class="line-numbers">  14 </span>   <span class="Keyword">catch</span>(<span class="LibraryClassType">SQLException</span> ex)
<span class="line-numbers">  15 </span>   {
<span class="line-numbers">  16 </span>       <span class="Keyword">throw</span> <span class="Keyword">new</span> <span class="LibraryClassType">RuntimeException</span>(<span class="String"><span class="String">&quot;</span>Unable to get a blob for '<span class="String">&quot;</span></span> <span class="Operator">+</span> data <span class="Operator">+</span> <span class="String"><span class="String">&quot;</span>'<span class="String">&quot;</span></span>, ex);
<span class="line-numbers">  17 </span>   }
<span class="line-numbers">  18 </span>   <span class="Keyword">finally</span>
<span class="line-numbers">  19 </span>   {
<span class="line-numbers">  20 </span>       <span class="Keyword">try</span> { <span class="Keyword">if</span>(blob <span class="Operator">!=</span> <span class="BuiltInConstant">null</span>) blob.close(); } <span class="Keyword">catch</span>(<span class="LibraryClassType">Exception</span> ex) {};
<span class="line-numbers">  21 </span>   }
<span class="line-numbers">  22 </span> }
</pre></p>


	<p>Then use the method like this:</p>


	<p><pre class="active4d"><span class="line-numbers">   1 </span> <span class="LibraryClassType">Connection</span> connection = getConnection();
<span class="line-numbers">   2 </span> <span class="LibraryClassType">PreparedStatement</span> statement = getPreparedStatement(yer sequel);
<span class="line-numbers">   3 </span> 
<span class="line-numbers">   4 </span> statement.setBlob(<span class="Number">1</span>, getBlob(connection,  <span class="Operator">&lt;</span><span class="Storage">Mao</span><span class="String"><span class="String">'</span>s Little Red Book&gt;));</span>
</pre></p>
  </div>

  <div style="font-size: 0.8em;margin:0.5em;">
    
      Tagged <a href="/tags/86-oracle">oracle</a>, <a href="/tags/181-blob">blob</a>, <a href="/tags/33-jdbc">jdbc</a>, <a href="/tags/5-java">java</a>, <a href="/tags/182-utf-8">utf-8</a>
    
    
  </div>
</div>






