Chapter 5. Application development with Java 
215
The supported methods for the scrollable cursor are:
 first()
 last()
 next()
 previous()
 absolute()
 relative()
 afterLast()
 beforeLast()
BatchUpdate
With batch updates, a group of updates can be done to the database at the same 
time instead of updating one by one. The Statement object provides the following 
methods for batch updates:
 addBatch method can be used to add the SQL statements in the batch.
 executeBatch method will execute all the batch statements at the same time.
 executeBatch method will return the number of rows affected by the batch 
update.
Example 5-11 shows how to do the batch updates using the Statement object.
Example 5-11   Batch update with Statement object
con.setAutoCommit(false);
Statement stmt=con.createStatement();
stmt.addBatch("create table cart(pid varchar(10), quantity int");
stmt.addBatch("insert into cart values(‘100-100-01’,4)");
stmt.addBatch("insert into cart values(‘100-101-01’,5)");
int[] numUpdates=stmt.executeBatch();
for(int i=0;i<numUpdates.length;i++)
{
if(numUpdates[i]==-2)
Tip: Each ResultSet object is associated with a Statement, 
PreparedStatement, or CallableStatement object. The sensitivity or the 
updatability cannot be defined at the resultSet level. It should be defined while 
creating the statement object itself, which means ResultSet objects created 
for SQL statements using the same statement object will have the same 
properties. So once the ResultSet object is created, it is not possible to 
change the properties.
In the application getProducts, isCustomer uses the ResultSet object to fetch 
the result of the query.
Pdf thumbnail viewer - Draw thumbnail images for PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
pdf thumbnail preview; how to create a thumbnail of a pdf document
Pdf thumbnail viewer - VB.NET PDF Thumbnail Create SDK: Draw thumbnail images for PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
create thumbnail from pdf c#; how to make a thumbnail from pdf
216
DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET
System.out.println("Statement " + i +": Unknown number of rows
updated");
else
System.out.println("Statement " + i +": Successful "+ numUpdates[i]
+"rows updated");
}
con.commit();
PreparedStatement and CallableStatement can also be used to make the batch 
updates. This can be done by running the same PreparedStatement or 
CallableStatement with different parameter values.
Example 5-12 gives the code snippet from the application code from the method 
createCart. The method takes an HashMap object which has the key-value pair of 
product name and the quantity as an input and inserts the PID and QUANTITY 
values using a batch update into a table. The table is also created in the same 
method. The name of the table is generated by appending the CID value to the 
word cart.
Example 5-12   Batch update with PreparedStatement object
Statement stmt=con.createStatement();
String cart = "cart"+cid;
String insertQuery="insert into "+cart+ " values((select pid 
from product where name=?),?)";
String createQuery="create table "+cart+"(pid varchar(10), 
quantity int)";
PreparedStatement pstmt=con.prepareStatement(insertQuery);
System.out.println(insertQuery);
stmt.executeUpdate(createQuery);
con.setAutoCommit(false);
Set set=hm.keySet();
Iterator it=set.iterator();
while(it.hasNext())
{
String key=(String) it.next();
pstmt.setString(1,key);
pstmt.setInt(2,((Integer)hm.get(key)).intValue());
pstmt.addBatch();
System.out.println(key +" 
"+((Integer)hm.get(key)).intValue());
}
pstmt.executeBatch();
How to C#: Generate Thumbnail for Word
for DNN, C#.NET Winforms Document Viewer, C#.NET WPF Document Viewer. VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel How to C#: Generate Thumbnail for Word
enable pdf thumbnail preview; create thumbnail jpeg from pdf
How to C#: Set Image Thumbnail in C#.NET
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel How to C#: Set Image Thumbnail in C#.NET. XImage.Raster SDK library, you can create an image viewer and view
how to make a thumbnail of a pdf; html display pdf thumbnail
Chapter 5. Application development with Java 
217
con.commit();
con.setAutoCommit(true);
5.4.3  MetaData
The java.sql package provides three interfaces to access the metadata at the 
database level, parameter level, and result set level. The driver class implements 
these interfaces. 
DatabaseMetaData
DatabaseMetaData object gives the information of the database as a whole. The 
object can be created by calling the method getMetaData of Connection object. 
The DatabaseMetaData object provides a lot of methods to get the database 
information. Some of them are explained below:
 Driver information
getDriverName and getDriverVersion methods give the details of the driver in 
use.
 Index and primary key information
getIndexInfo gives the details of the indexes in the database. Similarly, the 
getPrimaryKeys method gives the primary key’s details.
 Information of database object name’s length
getMaxCursorNameLength, getMaxProcedureNameLength, 
getMaxSchemaNameLength, getMaxStatementLength, 
getMaxTableNameLength and so on give the maximum length allowed for the 
different database objects.
 Information regarding the database objects
getProcedures, getSchemas, getTables, getUserName, getTableTypes, and 
so on methods give the information regarding the database object.
Tip: To execute a batch of statements, all the statements in a single batch 
should be batch compatible. 
Batch compatible
statements fall in two 
categories: 
1. Statements not having parameter markers or host expressions.
2. Different instances (with different parameter values) of the same 
PreparedStatement if the statement has the parameter marker.
All the statement in category 1 are batch compatible. In the same way, all the 
statements in category 2 are batch compatible, but none of the statements in 
category 1 are batch compatible with the statements in category 2.
How to C#: Generate Thumbnail for PowerPoint
for DNN, C#.NET Winforms Document Viewer, C#.NET WPF Document Viewer. VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET How to C#: Generate Thumbnail for PowerPoint
pdf files thumbnails; disable pdf thumbnails
VB.NET Image: Program for Creating Thumbnail from Documents and
multiple document and image formats, such as PDF, TIFF, GIF you have a demand of creating thumbnail in any in WinForms and Web Document Image Viewer Installation
pdf first page thumbnail; show pdf thumbnail in
218
DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET
 Information regarding database object size
Methods are provided to get the information regarding the size of the object 
such as maximum number of connections allowed, maximum number of 
columns in a table, and so on. Examples of these kinds of methods are:
– getMaxConnection
– getMaxColumnInTable
– getMaxColumnInOrderBy
– getMaxColumnInIndex
– getMaxColumnInSelect and so on 
 Support functions
There are a lot of support functions defined that can be used to check if any of 
the functionality is supported in this driver or not. Some examples are: 
– supportBatchUpdates
– supportConvert
– supportColumnAliasing
– supportGroupBy
– supportGroupByUnrelated
– supportExpressionInOrderBy
– supportFullOuterJoins and so on
ParameterMetaData
This interface is included in JDBC universal driver and is not supported for Type 
2 drivers. This interface contains the methods to retrieve the information 
regarding the parameter’s markers in a PreparedStatement object.The 
ParameterMetaData object can be created by calling the getParameterMetaData 
method of PrepareStatement object. This interface has the following methods:
 getParameterCount
This method returns the number of parameters in PrepareStatement.
 getParameterType
This method returns the SQL data type of the parameter marker. It takes an 
integer value, which indicates the position of the parameter marker in the 
PreparedStatement.
 getParameterMode
This method gives the information regarding the type of the parameter: IN, 
INOUT, or OUT.
 isNullable 
This method returns true if the parameter is nullable; otherwise, it returns 
false.
How to C#: Generate Thumbnail for Raster
for DNN, C#.NET Winforms Document Viewer, C#.NET WPF Document Viewer. VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET How to C#: Generate Thumbnail for Raster.
create pdf thumbnail; can't see pdf thumbnails
Create Thumbnail in Web Image Viewer | Online Tutorials
Web Image Viewer Installation; View and Display Images; Annotate & Redact Documents or Images; Create Thumbnail; RasterEdge OCR Engine; PDF Reading; Encode & Decode
how to view pdf thumbnails in; pdf thumbnail fix
Chapter 5. Application development with Java 
219
 getPrecision and getScale
These methods return the precision and the scale of the parameter marker if 
the parameter type is decimal.
ResultSetMetaData
This interface provides the methods to get the ResultSet information. This 
information is specially needed to retrieve the data when the application does not 
know about the column types in the ResultSet. The object of ResultSetMetaData 
can be created by calling the getResultSetMetaData method on the ResultSet 
object. This interface has the following important methods:
 getColumnCount
This method returns the number of columns in the ResultSet object.
 getColumnName
This method returns the name of the column in the ResultSet object.
 getColumnType
This method returns the data type of the column.
 getTableName
This method returns the name of the underlying table for the ResultSet.
 isNullable
This method returns true if the ResultSet column can have a null value.
 isReadOnly
This method will return true if the column is read-only.
5.5  Stored procedure support
DB2 supports the Java stored procedure, which can be run on the server side by 
the application. Follow these guidelines to create the Java stored procedure:
 The method in the class, which will map to the stored procedure, must be 
defined as public static void method.
 Output and InOut parameters must be set up as a single element array.
To create, register, and use a Java stored procedure in an application, follow 
these steps:
1. Write a Java program with the stored procedure method. The method should 
be public static void.
2. Compile the program using the Java compiler.
3. Copy the .class file of the program to sqllib/function directory on server 
side. If you declare a class to be part of the Java package, create 
C# Image: Quick to Navigate Document in .NET Web Viewer
To set the specific size for thumbnail image in Web to the target part of web viewer document by of the well-formed documents, like Word and PDF, will contain
pdf reader thumbnails; print pdf thumbnails
How to C#: Overview of Using XImage.Raster
test. OR create a WinForms Viewer. Basic SDK Concept. Refer navigation. You may edit the tiff document easily. Create Thumbnail. See
no pdf thumbnails in; .pdf printing in thumbnail size
220
DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET
subdirectories in the function directory that correspond to the fully qualified 
class names and place the related class files in the corresponding 
subdirectories. You can create a JAR file too in case you want to copy a set of 
stored procedure class files.
4. Register the stored procedure to the database using the CREATE 
PROCEDURE command.
5. Call the stored procedure from the client program.
Let us register the stored procedure to create an XML document for the porder 
column of the PURCHASEORDER table. 
Step 1
Example 5-13 shows the stored procedure. Make sure that the class should be 
public and extends the StoredProc class. The method in the class should be 
public void. The OUT parameter values are set using the set function.
Example 5-13   Stored procedure
import java.sql.*;
import com.ibm.db2.jcc.*;
import COM.ibm.db2.app.StoredProc;
public class CreateOrder extends StoredProc
{
public void createOrder(int poid, String cart, String porder) throws 
Exception
{
PreparedStatement stmt;
Connection con = 
DriverManager.getConnection("jdbc:default:connection");
java.util.Date d = new java.util.Date();
String value=null;
String date=d.getYear()+"-"+d.getMonth()+"-"+d.getDate();
String query="Select xmldocument(XMLELEMENT (NAME 
\"PurchaseOrder\"," +
"xmlattributes(cast(? as int) as \"PoNum\",cast(? as varchar(10)) 
as \"OrderDate\", cast(? as varchar(10)) as \"Status\"),"+
"xmlagg(xmlelement(NAME \"item\",xmlconcat(" +
"xmlelement(NAME \"partid\", t.pid)," +
"xmlelement(NAME \"name\", p.name)," +
"xmlelement(NAME \"quantity\",t.quantity)," +
"xmlelement(NAME \"price\", t.quantity*p.price)" +
"))))) from "+ cart +" as t, product as p where p.pid=t.pid";
Chapter 5. Application development with Java 
221
stmt = con.prepareStatement(query);
stmt.setInt(1,poid);
stmt.setString(2, date);
stmt.setString(3,"unshipped");
ResultSet rs=stmt.executeQuery();
rs.next();
value=rs.getString(1);
rs.close();
set(3,value);
   
}
Step 2
Compile the above class using the javac compiler.
Step 3
Copy the CreateOrder.class to the sqllib/function directory.
Step 4
Register the stored procedure using the following command:
CREATE PROCEDURE createOrder( IN poid int,IN cart varchar(10), OUT 
porder varchar(5000)) DYNAMIC RESULT SETS 0 NOT DETERMINISTIC LANGUAGE 
JAVA PARAMETER STYLE DB2GENERAL NO DBINFO FENCED THREADSAFE READS SQL 
DATA PROGRAM TYPE SUB EXTERNAL NAME 'CreateOrder.createOrder'
Step 5
Call the stored procedure from the client program.
The createPorder method of the application calls this stored procedure to create 
the PORDER column value for the PURCHASEORDER table. You can call this stored 
procedure from the command line using the following command:
call createOrder(poid, cart, ?)
where poid is the purchase order ID and cart is the table name. Before calling the 
stored procedure, make sure that the poid value does not exist in the 
PURCHASEORDER table and CART table has the PID and QUANTITY columns of 
varchar(10) and int data type respectively. Also, populate the CART table with 
product ID and quantity values. PID inserted in this table should exist in the 
PRODUCT table.
The stored procedure returns the XML value in its output parameter denoted by 
the question mark (?) while calling the stored procedure.
222
DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET
5.6  Handling large objects
JDBC provides different classes to support BLOB, CLOB, and XML values.
BLOB
A BLOB value can be used to store the binary large value. A BLOB object can be 
created and populated using the way shown in Example 5-14. 
Example 5-14   Creating a BLOB value
String data=new String("jdbc");
byte[] byteArray=data.getBytes();
java.sql.Blob 
blobData=com.ibm.db2.jcc.t2zos.DB2LobFactory.createBlob(byteArray);
BLOB implementation in DB2 JDBC universal driver does not support any 
constructor function to create the BLOB object. So, it is not possible to create a 
BLOB object using a new operator.
The value of the BLOB type parameter can be set using the following 
PreparedStatement setter methods:
 setBytes
 SetBinaryStream
The BLOB value from the ResultSet object can be retrieved using the following 
ResultSet getter methods:
 getBytes
 getBinaryStream
CLOB and DBCLOB
A CLOB value can be used to store the character large value. A CLOB object can 
be created using a way similar to the way we created a BLOB object. 
Example 5-15 shows how to create a CLOB value.
Example 5-15   Creating a CLOB value
String xsdData = new String("jdbc");
java.sql.Clob clobData = 
com.ibm.db2.jcc.t2zos.DB2LobFactory.createClob(xsdData);
The parameter value of type CLOB can be set using the following setter methods 
of PreparedStatement object:
 setString
Chapter 5. Application development with Java 
223
 setAsciiStream
 setUnicodeStream
 setCharacterStream
The CLOB value can be retrieved from the result set using the following getter 
methods of ResultSet object:
 getAsciiStream
 getCharacterString
 getString
 getUnicodeStream
DBCLOB values are handled as CLOB objects in JDBC.
GRAPHICS and DBGRAPHICS
GRAPHICS and DBGRAPHICS are treated as String values in JDBC.
XML
XML is a new data type introduced in DB2 9. XML is different from the current 
data types supported in DB2, because XML is self-defined and stored in an tree 
structure manner in the database. For more details about the XML data type, 
refer to Chapter 2, “Application development with DB2 pureXML” on page 49.
Currently, JDBC does not have any XML class to support the XML data type. 
XML data or columns can be mapped to any of the following:
 String
 byte
 Stream
 com.ibm.db2.DB2Xml class
com.ibm.db2.DB2Xml is a newly introduced class in JDBC universal driver. This 
class is a native class for the universal driver for handling the XML values.
The following setXXX method can be used to set the value of the XML parameter 
in a PreparedStatement object:
 setBytes()
 setString()
 setAsciiStream()
 setBinaryStream()
Tip: When creating the BLOB object, a byte array should be passed to the 
createBlob method. When creating the CLOB object, a String value should be 
passed to the createCLOB method.
224
DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET
 setCharacterStream()
 setClob()
 setBlob()
 setObject()
Supports DB2Xml, String, byte[], inputStream, Reader, CLOB, and BLOB as 
parameters
The encoding conversion of the XML data depends on which setXXX method is 
used to bind the parameter value. The setAsciiStream, setCharacterStream, and 
setString methods convert the encoding to UTF-8 and send the XML value as an 
explicit external encoding; setByte and setBinaryStream assume that the internal 
encoding is correct and send the XML value with internal encoding.
An XML value can be retrieved from the ResultSet using the following getXXX 
methods:
 getBytes()
 getString()
 getAsciiStream()
 getBinaryStream()
 getCharacterStream()
 getObject()
The getObject method will retrieve the XML value as an DB2Xml class object. 
The XML values retrieved by these methods are externally encoded data and 
without explicit XML declaration. These methods cannot be called on the same 
XML row again. Trying to do that will throw an SQLException.
com.ibm.db2.jcc.DB2Xml Class
DB2 Universal JDBC driver introduces the DB2Xml class. The object of this class 
is returned to the application whenever the getObject method is used to retrieve 
the XML column value from the ResultSet object.
This class define methods to convert the XML data to other Java data types, 
such as String, byte[], BinaryStream, and AsciiStream. These methods have the 
getDB2XXX format where XXX indicate the data type. This class also defines the 
methods which convert the XML data to the specified data and add the XML 
declaration tag. These methods have a format such as getDB2XmlXXX.
Example 5-16 shows how to retrieve an XML value as a DB2Xml object.
Example 5-16   Retrieving XML value as a DB2Xml object
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select info from customer");
Documents you may be interested
Documents you may be interested