{"id":741,"date":"2015-12-24T11:08:59","date_gmt":"2015-12-24T04:08:59","guid":{"rendered":"http:\/\/www.sqlitetutorial.net\/?page_id=741"},"modified":"2022-08-28T15:24:19","modified_gmt":"2022-08-28T08:24:19","slug":"sqlite-java-write-and-read-blob","status":"publish","type":"page","link":"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/","title":{"rendered":"SQLite Java: Write and Read BLOB"},"content":{"rendered":"\r\n<p><strong>Summary<\/strong>: this tutorial shows you step by step how to update and select the BLOB from an SQLite database.<\/p>\r\n\r\n\r\n\r\n<p>For the demonstration, we will use the <code>materials<\/code> table that we created in the <a href=\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/create-table\/\">creating table tutorial<\/a>.<\/p>\r\n\r\n\r\n\r\n<p>Suppose we have to store a picture for each material in the <code>materials<\/code> table. To do this, we add a column whose <a href=\"https:\/\/www.sqlitetutorial.net\/sqlite-data-types\/\">data type<\/a> is BLOB to the <code>materials<\/code> table.<\/p>\r\n\r\n\r\n\r\n<p>The following&nbsp; <code><a href=\"https:\/\/www.sqlitetutorial.net\/sqlite-alter-table\/\">ALTER TABLE<\/a><\/code> statement adds the <code>picture<\/code> column to the <code>materials<\/code> table.<\/p>\r\n\r\n\r\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">ALTER<\/span> <span class=\"hljs-keyword\">TABLE<\/span> materials <span class=\"hljs-keyword\">ADD<\/span> <span class=\"hljs-keyword\">COLUMN<\/span> picture <span class=\"hljs-built_in\">blob<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Insert BLOB data into SQLite database<\/h2>\r\n\r\n\r\n\r\n<p>First, <a href=\"https:\/\/www.sqlitetutorial.net\/sqlite-select\/\">query data<\/a> from the <code>materials<\/code> table to view its content:<\/p>\r\n\r\n\r\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">SELECT<\/span>\r\n\t<span class=\"hljs-keyword\">id<\/span>,\r\n\tdescription,\r\n\tpicture\r\n<span class=\"hljs-keyword\">FROM<\/span>\r\n\tmaterials;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\r\n\r\n\r\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"234\" height=\"43\" src=\"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-Java-BLOB-before-update.png\" alt=\"SQLite Java BLOB before update\" class=\"wp-image-742\"\/><\/figure>\r\n\r\n\r\n\r\n<p>The picture column is <code>NULL<\/code>.<\/p>\r\n\r\n\r\n\r\n<p>Second, prepare a picture file and place it in a folder e.g., C:\\temp as follows:<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"330\" height=\"165\" src=\"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-BLOB-picture-sample.png\" alt=\"SQLite BLOB picture sample\" class=\"wp-image-744\" srcset=\"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-BLOB-picture-sample.png 330w, https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-BLOB-picture-sample-300x150.png 300w\" sizes=\"auto, (max-width: 330px) 100vw, 330px\" \/><\/figure>\r\n\r\n\r\n\r\n<p>To update the <code>picture<\/code> column with the data from the picture file:<\/p>\r\n\r\n\r\n\r\n<ol class=\"wp-block-list\"><li>First, prepare an <a href=\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/update\/\">UPDATE&nbsp;statement<\/a>.<\/li><li>Next, <a href=\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/sqlite-jdbc-driver\/\">connect to the SQLite database<\/a> to get the <code>Connection<\/code> object.<\/li><li>Then, create a <code>PreparedStatement<\/code> object from the <code>Connection<\/code> object.<\/li><li>After that, supply the values to the corresponding parameters using the set* methods of the <code>PreparedStatement<\/code> object.<\/li><li>Finally, execute the <code>UPDATE<\/code> statement by calling the <code>executeUpdate()<\/code> method of the <code>PreparedStatement<\/code>&nbsp;object.<\/li><\/ol>\r\n\r\n\r\n\r\n<p>Notice that the SQLiteJDBC driver does not implement the <code>setBinaryStream()<\/code>&nbsp;method, therefore, you must use the <code>setBytes<\/code> method instead.<\/p>\r\n\r\n\r\n\r\n<p>The following <code>readFile<\/code> method reads a file and returns an array of bytes that we can pass to the <code>setBytes<\/code> method.<\/p>\r\n\r\n\r\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">   <span class=\"hljs-comment\">\/**\r\n     * Read the file and returns the byte array\r\n     * <span class=\"hljs-doctag\">@param<\/span> file\r\n     * <span class=\"hljs-doctag\">@return<\/span> the bytes of the file\r\n     *\/<\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">byte<\/span>&#91;] readFile(String file) {\r\n        ByteArrayOutputStream bos = <span class=\"hljs-keyword\">null<\/span>;\r\n        <span class=\"hljs-keyword\">try<\/span> {\r\n            File f = <span class=\"hljs-keyword\">new<\/span> File(file);\r\n            FileInputStream fis = <span class=\"hljs-keyword\">new<\/span> FileInputStream(f);\r\n            <span class=\"hljs-keyword\">byte<\/span>&#91;] buffer = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">byte<\/span>&#91;<span class=\"hljs-number\">1024<\/span>];\r\n            bos = <span class=\"hljs-keyword\">new<\/span> ByteArrayOutputStream();\r\n            <span class=\"hljs-keyword\">for<\/span> (<span class=\"hljs-keyword\">int<\/span> len; (len = fis.read(buffer)) != -<span class=\"hljs-number\">1<\/span>;) {\r\n                bos.write(buffer, <span class=\"hljs-number\">0<\/span>, len);\r\n            }\r\n        } <span class=\"hljs-keyword\">catch<\/span> (FileNotFoundException e) {\r\n            System.err.println(e.getMessage());\r\n        } <span class=\"hljs-keyword\">catch<\/span> (IOException e2) {\r\n            System.err.println(e2.getMessage());\r\n        }\r\n        <span class=\"hljs-keyword\">return<\/span> bos != <span class=\"hljs-keyword\">null<\/span> ? bos.toByteArray() : <span class=\"hljs-keyword\">null<\/span>;\r\n    }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\r\n\r\n\r\n<p>To connect to the <code>test.db<\/code> database, you use the <code>connect()<\/code> method as follows:<\/p>\r\n\r\n\r\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">    <span class=\"hljs-comment\">\/**\r\n     * Connect to the test.db database\r\n     *\r\n     * <span class=\"hljs-doctag\">@return<\/span> the Connection object\r\n     *\/<\/span>\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">private<\/span> Connection <span class=\"hljs-title\">connect<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\r\n        <span class=\"hljs-comment\">\/\/ SQLite connection string<\/span>\r\n        String url = <span class=\"hljs-string\">\"jdbc:sqlite:C:\/\/sqlite\/db\/test.db\"<\/span>;\r\n        Connection conn = <span class=\"hljs-keyword\">null<\/span>;\r\n        <span class=\"hljs-keyword\">try<\/span> {\r\n            conn = DriverManager.getConnection(url);\r\n        } <span class=\"hljs-keyword\">catch<\/span> (SQLException e) {\r\n            System.out.println(e.getMessage());\r\n        }\r\n        <span class=\"hljs-keyword\">return<\/span> conn;\r\n    }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\r\n\r\n\r\n<p>The following <code>updatePicture()<\/code>&nbsp;method updates a picture specified by the file name for a particular material.<\/p>\r\n\r\n\r\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-comment\">\/**\r\n     * Update picture for a specific material\r\n     *\r\n     * <span class=\"hljs-doctag\">@param<\/span> materialId\r\n     * <span class=\"hljs-doctag\">@param<\/span> filename\r\n     *\/<\/span>\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">updatePicture<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span> materialId, String filename)<\/span> <\/span>{\r\n        <span class=\"hljs-comment\">\/\/ update sql<\/span>\r\n        String updateSQL = <span class=\"hljs-string\">\"UPDATE materials \"<\/span>\r\n                + <span class=\"hljs-string\">\"SET picture = ? \"<\/span>\r\n                + <span class=\"hljs-string\">\"WHERE id=?\"<\/span>;\r\n\r\n        <span class=\"hljs-keyword\">try<\/span> (Connection conn = connect();\r\n                PreparedStatement pstmt = conn.prepareStatement(updateSQL)) {\r\n\r\n            <span class=\"hljs-comment\">\/\/ set parameters<\/span>\r\n            pstmt.setBytes(<span class=\"hljs-number\">1<\/span>, readFile(filename));\r\n            pstmt.setInt(<span class=\"hljs-number\">2<\/span>, materialId);\r\n\r\n            pstmt.executeUpdate();\r\n            System.out.println(<span class=\"hljs-string\">\"Stored the file in the BLOB column.\"<\/span>);\r\n\r\n        } <span class=\"hljs-keyword\">catch<\/span> (SQLException e) {\r\n            System.out.println(e.getMessage());\r\n        }\r\n    }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\r\n\r\n\r\n<p>To update the picture for the material id 1, you use the following code:<\/p>\r\n\r\n\r\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">package<\/span> net.sqlitetutorial;\r\n\r\n<span class=\"hljs-keyword\">import<\/span> java.io.ByteArrayOutputStream;\r\n<span class=\"hljs-keyword\">import<\/span> java.io.File;\r\n<span class=\"hljs-keyword\">import<\/span> java.io.FileInputStream;\r\n<span class=\"hljs-keyword\">import<\/span> java.io.FileNotFoundException;\r\n<span class=\"hljs-keyword\">import<\/span> java.io.FileOutputStream;\r\n<span class=\"hljs-keyword\">import<\/span> java.io.IOException;\r\n<span class=\"hljs-keyword\">import<\/span> java.io.InputStream;\r\n<span class=\"hljs-keyword\">import<\/span> java.sql.Connection;\r\n<span class=\"hljs-keyword\">import<\/span> java.sql.DriverManager;\r\n<span class=\"hljs-keyword\">import<\/span> java.sql.PreparedStatement;\r\n<span class=\"hljs-keyword\">import<\/span> java.sql.ResultSet;\r\n<span class=\"hljs-keyword\">import<\/span> java.sql.SQLException;\r\n\r\n<span class=\"hljs-comment\">\/**\r\n *\r\n * <span class=\"hljs-doctag\">@author<\/span> sqlitetutorial.net\r\n *\/<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">BLOBApp<\/span> <\/span>{\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">private<\/span> Connection <span class=\"hljs-title\">connect<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\r\n        <span class=\"hljs-comment\">\/\/...<\/span>\r\n    }\r\n \r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">byte<\/span>&#91;] readFile(String file) {\r\n       <span class=\"hljs-comment\">\/\/...<\/span>\r\n    }\r\n   \r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">updatePicture<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span> materialId, String filename)<\/span> <\/span>{\r\n        <span class=\"hljs-comment\">\/\/...<\/span>\r\n    }\r\n\r\n     <span class=\"hljs-comment\">\/**\r\n     * <span class=\"hljs-doctag\">@param<\/span> args the command line arguments\r\n     *\/<\/span>\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\r\n        BLOBApp app = <span class=\"hljs-keyword\">new<\/span> BLOBApp();\r\n        app.updatePicture(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-string\">\"c:\\\\temp\\\\HP_Laptop.jpg\"<\/span>);\r\n    }\r\n}\r\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\r\n\r\n\r\n<p>Note that we didn&#8217;t&nbsp;repeat the body of the methods that we already metioned.<\/p>\r\n\r\n\r\n\r\n<p>Let&#8217;s execute the program and check the <code>materials<\/code> table again.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"235\" height=\"42\" src=\"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-Java-BLOB-after-update.png\" alt=\"SQLite Java BLOB after update\" class=\"wp-image-745\"\/><\/figure>\r\n\r\n\r\n\r\n<p>It works as expected.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Query BLOB data from SQLite database<\/h2>\r\n\r\n\r\n\r\n<p>The following steps show you how to query BLOB data from the SQLite database:<\/p>\r\n\r\n\r\n\r\n<ol class=\"wp-block-list\"><li>First, prepare a <a href=\"https:\/\/www.sqlitetutorial.net\/sqlite-select\/\">SELECT<\/a> statement.<\/li><li>Next, create a <code>Connection<\/code> object by connecting to the SQLite database.<\/li><li>Then, create an instance of the&nbsp;<code>PreparedStatement<\/code>&nbsp;class from the <code>Connection<\/code> object. Use the set* method of the <code>PreparedStatement<\/code> object to supply values for the parameters.<\/li><li>After that, call the <code>executeQuery<\/code> method of the <code>PreparedStatement<\/code> object to get the <code>ResultSet<\/code> object.<\/li><li>Finally, loop through the result set, use the <code>getBinaryStream()<\/code> method to&nbsp;get data, and use the&nbsp;<code>FileOutputStream<\/code> object to save data into a file.<\/li><\/ol>\r\n\r\n\r\n\r\n<p>The following <code>readPicture<\/code> method selects the BLOB data of a specific material and saves it to a file.<\/p>\r\n\r\n\r\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-comment\">\/**\r\n     * read the picture file and insert into the material master table\r\n     *\r\n     * <span class=\"hljs-doctag\">@param<\/span> materialId\r\n     * <span class=\"hljs-doctag\">@param<\/span> filename\r\n     *\/<\/span>\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">readPicture<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span> materialId, String filename)<\/span> <\/span>{\r\n        <span class=\"hljs-comment\">\/\/ update sql<\/span>\r\n        String selectSQL = <span class=\"hljs-string\">\"SELECT picture FROM materials WHERE id=?\"<\/span>;\r\n        ResultSet rs = <span class=\"hljs-keyword\">null<\/span>;\r\n        FileOutputStream fos = <span class=\"hljs-keyword\">null<\/span>;\r\n        Connection conn = <span class=\"hljs-keyword\">null<\/span>;\r\n        PreparedStatement pstmt = <span class=\"hljs-keyword\">null<\/span>;\r\n\r\n        <span class=\"hljs-keyword\">try<\/span> {\r\n            conn = connect();\r\n            pstmt = conn.prepareStatement(selectSQL);\r\n            pstmt.setInt(<span class=\"hljs-number\">1<\/span>, materialId);\r\n            rs = pstmt.executeQuery();\r\n\r\n            <span class=\"hljs-comment\">\/\/ write binary stream into file<\/span>\r\n            File file = <span class=\"hljs-keyword\">new<\/span> File(filename);\r\n            fos = <span class=\"hljs-keyword\">new<\/span> FileOutputStream(file);\r\n\r\n            System.out.println(<span class=\"hljs-string\">\"Writing BLOB to file \"<\/span> + file.getAbsolutePath());\r\n            <span class=\"hljs-keyword\">while<\/span> (rs.next()) {\r\n                InputStream input = rs.getBinaryStream(<span class=\"hljs-string\">\"picture\"<\/span>);\r\n                <span class=\"hljs-keyword\">byte<\/span>&#91;] buffer = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">byte<\/span>&#91;<span class=\"hljs-number\">1024<\/span>];\r\n                <span class=\"hljs-keyword\">while<\/span> (input.read(buffer) &gt; <span class=\"hljs-number\">0<\/span>) {\r\n                    fos.write(buffer);\r\n                }\r\n            }\r\n        } <span class=\"hljs-keyword\">catch<\/span> (SQLException | IOException e) {\r\n            System.out.println(e.getMessage());\r\n        } <span class=\"hljs-keyword\">finally<\/span> {\r\n            <span class=\"hljs-keyword\">try<\/span> {\r\n                <span class=\"hljs-keyword\">if<\/span> (rs != <span class=\"hljs-keyword\">null<\/span>) {\r\n                    rs.close();\r\n                }\r\n                <span class=\"hljs-keyword\">if<\/span> (pstmt != <span class=\"hljs-keyword\">null<\/span>) {\r\n                    pstmt.close();\r\n                }\r\n\r\n                <span class=\"hljs-keyword\">if<\/span> (conn != <span class=\"hljs-keyword\">null<\/span>) {\r\n                    conn.close();\r\n                }\r\n                <span class=\"hljs-keyword\">if<\/span> (fos != <span class=\"hljs-keyword\">null<\/span>) {\r\n                    fos.close();\r\n                }\r\n\r\n            } <span class=\"hljs-keyword\">catch<\/span> (SQLException | IOException e) {\r\n                System.out.println(e.getMessage());\r\n            }\r\n        }\r\n    }<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\r\n\r\n\r\n<p>For example, we can use the <code>readPicture()<\/code> method to get the BLOB data that we updated for the material id 1 and save it into a file named <code>HP_Laptop_From_BLOB.jpg<\/code> file.<\/p>\r\n\r\n\r\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">app.readPicture(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-string\">\"c:\\\\temp\\\\HP_Laptop_BLOB.jpg\"<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\r\n\r\n\r\n<p>We execute the program and check the <code>c:\\\\temp<\/code> folder:<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"353\" height=\"199\" src=\"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-BLOB-Java-JDBC-Select-BLOB.png\" alt=\"SQLite BLOB Java JDBC Select BLOB\" class=\"wp-image-748\" srcset=\"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-BLOB-Java-JDBC-Select-BLOB.png 353w, https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-BLOB-Java-JDBC-Select-BLOB-300x169.png 300w\" sizes=\"auto, (max-width: 353px) 100vw, 353px\" \/><\/figure>\r\n\r\n\r\n\r\n<p>In this tutorial, you have learned how to update and select BLOB data in the SQLite database using SQLite JDBC driver.<\/p>\r\n<div class=\"helpful-block-content\" data-title=\"\">\n\t<header>\n\t\t<div class=\"wth-question\">Was this tutorial helpful ?<\/div>\n\t\t<div class=\"wth-thumbs\">\n\t\t\t<button\n\t\t\t\tdata-post=\"741\"\n\t\t\t\tdata-post-url=\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/\"\n\t\t\t\tdata-post-title=\"SQLite Java: Write and Read BLOB\"\n\t\t\t\tdata-response=\"1\"\n\t\t\t\tclass=\"wth-btn-rounded wth-yes-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\tclass=\"feather feather-thumbs-up block w-full h-full\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> Yes <\/span>\n\t\t\t<\/button>\n\n\t\t\t<button\n\t\t\t\tdata-response=\"0\"\n\t\t\t\tdata-post=\"741\"\n\t\t\t\tdata-post-url=\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/\"\n\t\t\t\tdata-post-title=\"SQLite Java: Write and Read BLOB\"\n\t\t\t\tclass=\"wth-btn-rounded wth-no-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> No <\/span>\n\t\t\t<\/button>\n\t\t<\/div>\n\t<\/header>\n\n\t<div class=\"wth-form hidden\">\n\t\t<div class=\"wth-form-wrapper\">\n\t\t\t<div class=\"wth-title\"><\/div>\n\t\t\t\n\t\t\t<textarea class=\"wth-message\"><\/textarea>\n\n\t\t\t<button class=\"btn btn-primary wth-btn-submit\">Send<\/button>\n\t\t\t<button class=\"btn wth-btn-cancel\">Cancel<\/button>\n\t\t\n\t\t<\/div>\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summary: this tutorial shows you step by step how to update and select the BLOB from an SQLite database. For the demonstration, we will use the materials table that we created in the creating table tutorial. Suppose we have to store a picture for each material in the materials table. To do this, we add [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":636,"menu_order":8,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-741","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SQLite Java: Write and Read BLOB<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQLite Java: Write and Read BLOB\" \/>\n<meta property=\"og:description\" content=\"Summary: this tutorial shows you step by step how to update and select the BLOB from an SQLite database. For the demonstration, we will use the materials table that we created in the creating table tutorial. Suppose we have to store a picture for each material in the materials table. To do this, we add [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/\" \/>\n<meta property=\"og:site_name\" content=\"SQLite Tutorial\" \/>\n<meta property=\"article:modified_time\" content=\"2022-08-28T08:24:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-Java-BLOB-before-update.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.sqlitetutorial.net\/#\/schema\/person\/6d69b968cad0102e30d6694ed8dc6427\"},\"headline\":\"SQLite Java: Write and Read BLOB\",\"datePublished\":\"2015-12-24T04:08:59+00:00\",\"dateModified\":\"2022-08-28T08:24:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/\"},\"wordCount\":454,\"image\":{\"@id\":\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-Java-BLOB-before-update.png\",\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/\",\"url\":\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/\",\"name\":\"SQLite Java: Write and Read BLOB\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlitetutorial.net\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-Java-BLOB-before-update.png\",\"datePublished\":\"2015-12-24T04:08:59+00:00\",\"dateModified\":\"2022-08-28T08:24:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/#primaryimage\",\"url\":\"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-Java-BLOB-before-update.png\",\"contentUrl\":\"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-Java-BLOB-before-update.png\",\"width\":234,\"height\":43},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlitetutorial.net\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQLite Java\",\"item\":\"https:\/\/www.sqlitetutorial.net\/sqlite-java\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"SQLite Java: Write and Read BLOB\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlitetutorial.net\/#website\",\"url\":\"https:\/\/www.sqlitetutorial.net\/\",\"name\":\"SQLite Tutorial\",\"description\":\"A Step-by-step SQLite Tutorial\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlitetutorial.net\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlitetutorial.net\/#\/schema\/person\/6d69b968cad0102e30d6694ed8dc6427\",\"name\":\"admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SQLite Java: Write and Read BLOB","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/","og_locale":"en_US","og_type":"article","og_title":"SQLite Java: Write and Read BLOB","og_description":"Summary: this tutorial shows you step by step how to update and select the BLOB from an SQLite database. For the demonstration, we will use the materials table that we created in the creating table tutorial. Suppose we have to store a picture for each material in the materials table. To do this, we add [&hellip;]","og_url":"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/","og_site_name":"SQLite Tutorial","article_modified_time":"2022-08-28T08:24:19+00:00","og_image":[{"url":"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-Java-BLOB-before-update.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/#article","isPartOf":{"@id":"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/"},"author":{"name":"admin","@id":"https:\/\/www.sqlitetutorial.net\/#\/schema\/person\/6d69b968cad0102e30d6694ed8dc6427"},"headline":"SQLite Java: Write and Read BLOB","datePublished":"2015-12-24T04:08:59+00:00","dateModified":"2022-08-28T08:24:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/"},"wordCount":454,"image":{"@id":"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/#primaryimage"},"thumbnailUrl":"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-Java-BLOB-before-update.png","inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/","url":"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/","name":"SQLite Java: Write and Read BLOB","isPartOf":{"@id":"https:\/\/www.sqlitetutorial.net\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/#primaryimage"},"image":{"@id":"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/#primaryimage"},"thumbnailUrl":"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-Java-BLOB-before-update.png","datePublished":"2015-12-24T04:08:59+00:00","dateModified":"2022-08-28T08:24:19+00:00","breadcrumb":{"@id":"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/#primaryimage","url":"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-Java-BLOB-before-update.png","contentUrl":"https:\/\/www.sqlitetutorial.net\/wp-content\/uploads\/2015\/12\/SQLite-Java-BLOB-before-update.png","width":234,"height":43},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlitetutorial.net\/sqlite-java\/jdbc-read-write-blob\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlitetutorial.net\/"},{"@type":"ListItem","position":2,"name":"SQLite Java","item":"https:\/\/www.sqlitetutorial.net\/sqlite-java\/"},{"@type":"ListItem","position":3,"name":"SQLite Java: Write and Read BLOB"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlitetutorial.net\/#website","url":"https:\/\/www.sqlitetutorial.net\/","name":"SQLite Tutorial","description":"A Step-by-step SQLite Tutorial","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlitetutorial.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlitetutorial.net\/#\/schema\/person\/6d69b968cad0102e30d6694ed8dc6427","name":"admin"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlitetutorial.net\/wp-json\/wp\/v2\/pages\/741","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlitetutorial.net\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.sqlitetutorial.net\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlitetutorial.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlitetutorial.net\/wp-json\/wp\/v2\/comments?post=741"}],"version-history":[{"count":2,"href":"https:\/\/www.sqlitetutorial.net\/wp-json\/wp\/v2\/pages\/741\/revisions"}],"predecessor-version":[{"id":3559,"href":"https:\/\/www.sqlitetutorial.net\/wp-json\/wp\/v2\/pages\/741\/revisions\/3559"}],"up":[{"embeddable":true,"href":"https:\/\/www.sqlitetutorial.net\/wp-json\/wp\/v2\/pages\/636"}],"wp:attachment":[{"href":"https:\/\/www.sqlitetutorial.net\/wp-json\/wp\/v2\/media?parent=741"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}