- Useful - Java Tutorials
- JDBC - Discussion
- JDBC - Useful Resources
- JDBC - Quick Guide
- JDBC - Questions and Answers
- JDBC - Sorting Data
- JDBC - Like Clause
- JDBC - WHERE Clause
- JDBC - Delete Records
- JDBC - Update Records
- JDBC - Select Records
- JDBC - Insert Records
- JDBC - Drop Tables
- JDBC - Create Tables
- JDBC - Drop Database
- JDBC - Select Database
- JDBC - Create Database
- JDBC - Streaming Data
- JDBC - Stored Procedure
- JDBC - Batch Processing
- JDBC - Exceptions
- JDBC - Transactions
- JDBC - Data Types
- JDBC - Result Sets
- JDBC - Statements
- JDBC - Connections
- JDBC - Driver Types
- JDBC - Sample Code
- JDBC - Environment
- JDBC - SQL Syntax
- JDBC - Introduction
- JDBC - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
JDBC - Streaming ASCII and Binary Data
A PreparedStatement object has the abipty to use input and output streams to supply parameter data. This enables you to place entire files into database columns that can hold large values, such as CLOB and BLOB data types.
There are following methods, which can be used to stream data −
setAsciiStream() − This method is used to supply large ASCII values.
setCharacterStream() − This method is used to supply large UNICODE values.
setBinaryStream() − This method is used to supply large binary values.
The setXXXStream() method requires an extra parameter, the file size, besides the parameter placeholder. This parameter informs the driver how much data should be sent to the database using the stream.
This example would create a database table XML_Data and then XML content would be written into this table.
Copy and paste the following example in FirstApppcation.java, compile and run as follows −
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; pubpc class TestApppcation { static final String DB_URL = "jdbc:mysql://localhost/TUTORIALSPOINT"; static final String USER = "guest"; static final String PASS = "guest123"; static final String QUERY = "SELECT Data FROM XML_Data WHERE id=100"; static final String INSERT_QUERY="INSERT INTO XML_Data VALUES (?,?)"; static final String CREATE_TABLE_QUERY = "CREATE TABLE XML_Data (id INTEGER, Data LONG)"; static final String DROP_TABLE_QUERY = "DROP TABLE XML_Data"; static final String XML_DATA = "<Employee><id>100</id><first>Zara</first><last>Ap</last><Salary>10000</Salary><Dob>18-08-1978</Dob></Employee>"; pubpc static void createXMLTable(Statement stmt) throws SQLException{ System.out.println("Creating XML_Data table..." ); //Drop table first if it exists. try{ stmt.executeUpdate(DROP_TABLE_QUERY); }catch(SQLException se){ } stmt.executeUpdate(CREATE_TABLE_QUERY); } pubpc static void main(String[] args) { // Open a connection try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); Statement stmt = conn.createStatement(); PreparedStatement pstmt = conn.prepareStatement(INSERT_QUERY); ) { createXMLTable(stmt); ByteArrayInputStream bis = new ByteArrayInputStream(XML_DATA.getBytes()); pstmt.setInt(1,100); pstmt.setAsciiStream(2,bis,XML_DATA.getBytes().length); pstmt.execute(); //Close input stream bis.close(); ResultSet rs = stmt.executeQuery(QUERY); // Get the first row if (rs.next ()){ //Retrieve data from input stream InputStream xmlInputStream = rs.getAsciiStream (1); int c; ByteArrayOutputStream bos = new ByteArrayOutputStream(); while (( c = xmlInputStream.read ()) != -1) bos.write(c); //Print results System.out.println(bos.toString()); } // Clean-up environment rs.close(); } catch (SQLException | IOException e) { e.printStackTrace(); } } }
Now let us compile the above example as follows −
C:>javac FirstApppcation.java C:>
When you run FirstApppcation, it produces the following result −
C:>java FirstApppcation Creating XML_Data table... <Employee><id>100</id><first>Zara</first><last>Ap</last><Salary>10000</Salary><Dob>18-08-1978</Dob></Employee> C:>Advertisements