//*************************************************************************** // (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