//***************************************************************************
// (c) Copyright IBM Corp. 2007 All rights reserved.
//
// The following sample of source code ("Sample") is owned by International
// Business Machines Corporation or one of its subsidiaries ("IBM") and is
// copyrighted and licensed, not sold. You may use, copy, modify, and
// distribute the Sample in any form without payment to IBM, for the purpose of
// assisting you in the development of your applications.
//
// The Sample code is provided to you on an "AS IS" basis, without warranty of
// any kind. IBM HEREBY EXPRESSLY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR
// IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do
// not allow for the exclusion or limitation of implied warranties, so the above
// limitations or exclusions may not apply to you. IBM shall not be liable for
// any damages you suffer as a result of using, copying, modifying or
// distributing the Sample, even if IBM has been advised of the possibility of
// such damages.
//***************************************************************************
//
// SOURCE FILE NAME: DbConMDataSources.sqlj
//
// SAMPLE: Connect to a database using Multiple DataSources with Type 4 driver
//
// This sample program shows how to connect and access to a database
// using multiple DataSources (registered in a JNDI namespace) in an SQLJ
// application using the Universal JDBC Type 4 driver.
//
// This sample program uses two contexts. Each of these contexts is
// used by a different DataSource. The underlying connection from the
// first context, ctx1, is obtained from the DataSource
// jdbc/DB2SimpleDataSource_ds1. The underlying connection from the
// second context, ctx2, is obtained from the DataSource
// jdbc/DB2SimpleDataSource_ds2.
//
// These DataSources are registered using createRegisterDS.java
// and DS2.prop. Refer to the README file for details on how to run
// this sample.
//
// SQL Statements USED:
// SELECT
//
// Classes used from Util.sqlj are:
// Data
//
//
// Output will vary depending on the JDBC driver connectivity used.
//***************************************************************************
//
// For more information on the sample programs, see the README file.
//
// For information on developing Java applications see the Developing Java Applications book.
//
// For information on using SQL statements, see the SQL Reference.
//
// For the latest information on programming, compiling, and running DB2
// applications, visit the DB2 Information Center at
// http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp
//**************************************************************************/
import java.sql.*;
import sqlj.runtime.*;
import sqlj.runtime.ref.*;
#sql iterator simplePosIter1(String, String);
#sql iterator simplePosIter2(int, String);
#sql context DataSourcesCtx1 with (dataSource="jdbc/DB2SimpleDataSource_ds1");
#sql context DataSourcesCtx2 with (dataSource="jdbc/DB2SimpleDataSource_ds2");
class DbConMDataSources
{
public static void main(String argv[]) throws SQLException
{
System.out.println();
System.out.print(
"THIS SAMPLE SHOWS HOW TO CONNECT AND ACCESS TO THE SAMPLE DATABASE \n" +
"USING MULTIPLE DATASOURCES: \n" +
" jdbc/DB2SimpleDataSource_ds1 \n" +
" jdbc/DB2SimpleDataSource_ds2 \n" +
"WITH THE JDBC TYPE 4 DRIVER. \n");
// Using DataSources to obtain Connection Contexts.
// Create 2 Contexts. One for each DataSource.
DataSourcesCtx1 ctx1 = new DataSourcesCtx1();
DataSourcesCtx2 ctx2 = new DataSourcesCtx2();
try
{
simplePosIter1 posIter1 = null;
simplePosIter2 posIter2 = null;
String empno = null;
String firstname= null;
System.out.println();
System.out.println(
"----------------------------------------------------------\n" +
" NOTE! \n" +
" Connection is obtained from the DataSource:" +
" jdbc/DB2SimpleDataSource_ds1 \n" +
" \n" +
" Perform:\n" +
" SELECT empno, firstnme\n" +
" FROM employee\n" +
" WHERE firstnme like 'MA%'\n");
#sql [ctx1] posIter1 = { SELECT empno, firstnme
FROM employee
WHERE firstnme like 'MA%' };
System.out.println(
" Results:\n" +
" EMPNO FIRSTNME \n" +
" ------ ---------- ");
while (true)
{
#sql { FETCH :posIter1 into :empno, :firstname };
if (posIter1.endFetch())
{
break;
}
System.out.println(" "+Data.format(empno, 6) +
" " + Data.format(firstname, 12));
}
System.out.println();
System.out.println(
"----------------------------------------------------------\n" +
" NOTE! \n" +
" Connection is obtained from the DataSource:" +
" jdbc/DB2SimpleDataSource_ds2 \n");
try
{
#sql[ctx2] { DROP TABLE DS_test };
System.out.println(" DROP TABLE DS_test \n");
}
catch (SQLException s)
{}
// Create the table 'DS_test' in the 'sample' database
#sql[ctx2] { CREATE TABLE DS_test(c1 INT, c2 CHAR(20)) };
System.out.println(" CREATE TABLE DS_test(c1 INT, c2 CHAR(20)) \n");
// Insert data into the table 'DS_test'
#sql[ctx2] { INSERT INTO DS_test VALUES(1, 'ABC') };
System.out.println (" INSERT INTO DS_test VALUES(1, 'ABC') \n");
System.out.println(
" Perform:\n" +
" SELECT * FROM DS_test\n");
#sql[ctx2] posIter2 = { SELECT * FROM DS_test };
System.out.println(
" Results:\n" +
" EMPNO FIRSTNME \n" +
" ------ ---------- ");
int index = 0;
String value= null;
while (true)
{
#sql { FETCH :posIter2 into :index, :value };
if (posIter2.endFetch())
{
break;
}
System.out.println(" "+Data.format(index, 6) +
" " + Data.format(value, 12));
}
}
catch(Exception ex)
{
if (ex instanceof java.sql.SQLException)
{
System.out.println("error code: " +
((java.sql.SQLException)(ex)).getErrorCode());
}
}
} // end main
} // end class