Home

IBM Informix Embedded SQLJ User's Guide

image

Contents

1. System out printIn n ItemsRec fetchItemRec int ord_no throws SQLException ItemsRec items_rec sql i_ctx items_rec SELECT item_num order_num stock_num manu_code quantity total_price FROM items WHERE order_num ord_no bs Appendix A Embedded SQLJ and database connections A 5 return items_rec void printItemRec ItemsRec items_rec throws SQLException System out print ITEM NUMBER System out print STOCK NUMBER System out print MANUFACTURER CODE System out print QUANTITY System out print TOTAL PRICE System out printIn n 4 while items _rec next System out print items_rec item_num t t System out print items_rec stock_num t t System out print items_rec manu_code t t System out print items_rec quantity t t System out print items_rec total_price t t System out print n System out printIn n void drop_db throws SQLException try sql ctx drop database orders_db sql ctx drop database items_db catch SQLException s BRK RK RRR KK A KKK KKK KK KKK KKK KAKA KKK KKK KKK KKK IKKE KEI KEIR KEKE IBM CORPORATION PROPRIETARY DATA THIS DOCUMENT CONTAINS TRADE SECRET DATA WHICH IS THE PROPERTY OF IBM CORPORATION THIS DOCUMENT IS SUBMITTED TO RECIPIENT IN CONFIDENCE INFORMATION CONTAINED HEREIN MAY NOT BE USED COPIED OR DISCL
2. Notes 1 If a dotted decimal number has an asterisk next to it and there is only one item with that dotted decimal number you can repeat that same item more than once 2 If a dotted decimal number has an asterisk next to it and several items have that dotted decimal number you can use more than one item from the list but you cannot use the items more than once each In the previous example you can write HOST STATE but you cannot write HOST HOST 3 The symbol is equivalent to a loop back line in a railroad syntax diagram Specifies a syntax element that must be included one or more times A dotted decimal number followed by the symbol indicates that this syntax element must be included one or more times For example if you hear the line 6 1 data area you must include at least one data area If you hear the lines 2 2 HOST and 2 STATE you know that you must include HOST STATE or both As for the symbol you can repeat a particular item if it is the only item with that dotted decimal number The symbol like the symbol is equivalent to a loop back line in a railroad syntax diagram Appendix C Accessibility C 3 C 4 IBM Informix Embedded SQLJ User s Guide Notices This information was developed for products and services offered in the U S A IBM may not offer the products services or features discussed in this document in other countries Consult your local IBM representative for information on the
3. your company name year Portions of this code are derived from IBM Corp Sample Programs Copyright IBM Corp _enter the year or years_ All rights reserved If you are viewing this information softcopy the photographs and color illustrations may not appear Trademarks IBM the IBM logo and ibm com are trademarks or registered trademarks of International Business Machines Corp registered in many jurisdictions worldwide Other product and service names might be trademarks of IBM or other companies A current list of IBM trademarks is available on the web at Copyright and trademark information at http www ibm com legal copytrade shtml Adobe the Adobe logo and PostScript are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and or other countries Intel Itanium and Pentium are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries Java and all Java based trademarks and logos are trademarks or registered trademarks of Oracle and or its affiliates Linux is a registered trademark of Linus Torvalds in the United States other countries or both Microsoft Windows and Windows NT are trademarks of Microsoft Corporation in the United States other countries or both UNIX is a registered trademark of The Open Group in the United States and other countries Other company product or service names may
4. Informix Product Family Informix Version 4 10 IBM Informix Embedded SQLJ User s Guide all Informix Product Family Informix Version 4 10 IBM Informix Embedded SQLJ User s Guide all Note Before using this information and the product it supports read the information in Notices on page D 1 This document contains proprietary information of IBM It is provided under a license agreement and is protected by copyright law The information contained in this publication does not include any product warranties and any statements provided in this manual should not be interpreted as such When you send information to IBM you grant IBM a nonexclusive right to use or distribute the information in any way it believes appropriate without incurring any obligation to you Copyright IBM Corporation 1996 2013 US Government Users Restricted Rights Use duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp Contents Introduction About this publication Types of users Software compatability Assumptions about your locale Demonstration databases Example code conventions Additional documentation Compliance with industry standards Chapter 1 Introduction to IBM Informix embedded SQLJ Chapter 2 Preparation to use embedded SQLJ Chapter 3 Fundamentals of embedded SQLJ Erota Embedded SQL statements Result sets and iterators A simple embedded
5. J Passes interpreter options to the Java interpreter as shown in the following example J Duser language ja IBM Informix Embedded SQL User s Guide The options available to pass to the interpreter depend on the release and brand of Java you are using Do not use the C prefix with the d and encoding options when you specify these SQLJ translator options they are automatically passed to the Java compiler ifxsqlj options in property files You can use property files to supply options to the java ifxsqlj command The default name of a property file is sqlj properties you_can specify a different name by using the props option on the command line see Basic options for the ifxsqlj command on page 5 2 You cannot use a property file to specify e The props help and version basic options e The vm advanced option e Options with the prefix J for passing options to the Java interpreter Precedence of ifxsqlj options The java ifxsqlj command checks for the existence of files called sqlj properties in the following directories in the following order 1 The Java home directory 2 Your home directory 3 The current directory The translator processes each property file it finds and overrides any previously set option if it finds a new setting for that option Later entries in the same property file override earlier entries Options on the command line override options set by property files If you set options
6. fs new FileInputStream SQLscript if line null amp amp line indexOf line length 1 tryExecute read_line read_line new StringBuffer line getNextLine if line nu11 read_line append line append if read_line null amp amp read_line length gt 0 tryExecute read_line System out printIn n private boolean isComment String s if s null s trim return null s equals S n s length gt 2 amp amp s substring 0 2 equals s length gt 4 amp amp s substring 0 4 toUpperCase equals REM private String getNextLine String line null linenot Appendix A Embedded SQL and database connections A 7 A 8 try line br readLine if line null end_of_file true catch I0Exception e line null end_of_file true return isComment line null line private String bufferToCommand StringBuffer sb String s sb toString trim chop off trailing semicolon if s substring s length 1 s length equals s s substring 0 s length 1 return s private void tryExecute StringBuffer sb String cmd bufferToCommand sb System out print System out flush try countt Statement stmt conn createStatement stmt executeUpdate cmd stmt close catch SQLException e errorst System out printIn SQL Error lin
7. Handling errors Some iterator and connection context methods might raise exceptions specified by the JDBC API SQLException class For information about using SQLException methods to obtain information about these errors refer to your JOBC API documentation Chapter 4 The embedded SQL language 4 9 4 10 IBM Informix Embedded SQLJ User s Guide Chapter 5 Embedded SQLJ source code processing This chapter describes how to create executable Java programs from your Embedded SQLJ source code It explains e How to use the SQL translator e Basic translation and compilation options e Advanced translation and compilation options e How to use property files e How to perform online checking SQL program translation compiling and running You use the command java ifxsqlj to create executable Java class files from your Embedded SQL source code When you run the java ifxsqlj command with an sqlj source file the source file is processed in two stages In the first stage called translation the SQLJ translator creates a Java source file with the extension java For example when you process a file called File1 sqlj the SQLJ translator creates a file called File1 java The SQLJ translator also creates internal resource files with the extension ser In the second stage of processing the SQLJ translator passes java files to a Java compiler Compilation creates files with the extension class in this example your compiled Ja
8. for calling stored functions The BEGIN END block SQL statements must appear within curly braces as follows Copyright IBM Corp 1996 2013 4 1 sql create table customer customer_num serial 101 fname char 15 lname char 15 company char 20 addressl char 20 address2 char 20 city char 15 state char 2 zipcode char 5 phone char 18 primary key customer_num E An SQL statement that is not enclosed within curly braces will generate a syntax error SQL statements are case insensitive unless delimited by double quotes and can be written in uppercase lowercase or mixed case letters Java statements are case sensitive Host variables page 3 Host variables are variables of the host language in this case Java that appear within SQL statements A host variable represents a parameter variable or field and is prefixed by a colon as in the following example sql ctx SELECT INTO customer WHERE customer_num cust_no You use the SELECT statement with the INTO as shown in this example the FETCH statement with the INTO clause described in or an accessor method described in Named iterators on page 4 4 retrieve data into host variables to SELECT statements that return a single row 4 2 You use the SELECT INTO statement for queries that return a single record of data For queries that return multiple rows called a result set yo
9. user or omit the option entirely To disable online checking in a property file comment out the line specifying sqlj user To enable online checking against a nondefault connection context you specify the connection context with the user name in the user option In the following example the SQL translator connects to the database specified in the connection context object conctx using the user name fred 5 8 IBM Informix Embedded SQL User s Guide user conctx fred url and driver options The url option specifies a JDBC URL for establishing a database connection see Database URLs on page A 1 The driver option specifies a list of JDBC drivers that can be used to interpret JDBC connection URLs for online checking Both of these options are shown in Advanced options for the ifxsqlj command The ifxprofp tool Embedded SQLJ includes the ifxprofp tool The tool ifxprofp enables you to print out the information stored in internal resource ser files for debugging purposes You invoke the tool as follows java ifxprofp filename ser Here is an example of the output of the ifxprofp tool printing contents of profile Demo02_SJProfiled created 918584057644 2 9 99 10 14 AM associated context is sqlj runtime ref DefaultContext profile loader is sqlj runtime profile DefaultLoader 1f7f1941 contains no customizations original source file Demo02 sqlj contains 8 entries profile Demo02_SJProfileO entr
10. 3 2 SELECT AS statement 4 5 SELECT INTO statement 3 1 4 2 Semantics checking 1 1 5 8 setMaxFieldSize method 4 5 setMaxRows method 4 5 setQueryTimeou method 4 5 setUpdateCount method 4 5 Shortcut keys keyboard C 1 Specifying environment variables A 1 SPL routines 4 6 SQL statements 3 1 SQL types 4 6 SQL92 Entry level 4 1 SQLChecker cache file 5 2 SQLException class 4 8 SQLException methods 4 9 SQLJ consortium 1 1 SQLJ runtime package 4 8 SQLJ statement identifier 3 1 SQLJ translator 1 1 4 8 5 1 sqlj properties file 5 6 sqlj semantics JdbcChecker class 5 2 sqlj semantics OfflineChecker class 5 2 standards vii Stored functions 4 6 Syntax checking 1 1 5 8 Syntax diagrams reading in a screen reader C 1 T Translating source code 5 1 Type checking 1 1 4 3 4 4 Type mappings 4 6 U Unicode escape sequences 4 8 Updates positioned 4 5 User names setting in database URLs A 1 V Visual disabilities reading syntax diagrams C 1 W WHENEVER GOTO CONTINUE statement 4 1 WHERE CURRENT OF clause 4 5 Index X 3 X 4 IBM Informix Embedded SQLJ User s Guide Printed in USA SC27 4496 00
11. 4 6 Chapter 4 The embedded SQLJ language 4 3 Named iterators The name of each Java variable of a named iterator must match the name of a column returned by your SELECT statement order is irrelevant The matching of SQL column names and iterator column names is case insensitive For example the following statement generates a named iterator class called CustRec sql iterator CustRec int customer_num String fname String Iname String company String addressl String address2 String city String state String zipcode String phone J This iterator can hold the result set of any query that returns the columns defined in the iterator class You use accessor methods of the same name as each iterator column to obtain the returned data as shown in the example in A simple embedded SQLJ program on page 3 3 The SQLJ translator uses the iterator column names to create accessor methods Iterator column names are case sensitive therefore you must use the correct case when you specify an accessor method You cannot use the FETCH INTO statement with named iterators The following example illustrates the use of named iterators Declare Iterator of type CustRec CustRec cust_rec sql cust_rec SELECT FROM customer int row_cnt 0 while cust_rec next System out println System out println CUSTOMER NUMBER cust_rec customer_n
12. alternative to using the ConnectionManager class you can write your own input methods to read the values of user name password driver and database URL from a file or from the command line The connection context that you set up is the default connection context all sql statements execute within this context unless you specify a different context For information about using nondefault connection contexts see Nondefault connection contexts on page A 2 Embedded SQL statements Embedded SQL statements can appear anywhere that Java statements can legally appear SQL statements must appear within curly braces as follows sql INSERT INTO customer VALUES 101 Ludwig Pauli All Sports Supplies 213 Erstwild Court Sunnyvale CA 94086 408 789 8075 hs Copyright IBM Corp 1996 2013 3 1 You can use the SELECT INTO statement to retrieve data into Java variables host variables Host variables within SQL statements are designated by a preceding colon For example the following query places values in the variables customer_num fname Iname company address1 address2 city state zipcode and phone sql SELECT INTO customer_num fname lname company address1 address2 city state zipcode phone FROM customer WHERE customer_num 101 s SQL statements are case insensitive and can be written in uppercase lowercase or mixed case letters Java state
13. be trademarks or service marks of others Notices D 3 D 4 IBM Informix Embedded SQL User s Guide Index Special characters __sJT prefix 4 8 C prefix 5 6 cache option 5 2 compile option 5 2 compiler encoding flag option 5 2 compiler executable option 5 2 compiler output file option 5 2 d option 5 2 dir option 5 2 driver option 5 2 encoding option 5 2 help option 5 2 J prefix 5 6 linemap option 5 2 offline option 5 2 online option 5 2 password option 5 2 props option 5 2 5 6 ser2class option 5 2 status option 5 2 url option 5 2 user option 5 2 version option 5 2 vm option 5 2 warn option 5 2 class files 1 1 ser files 5 1 5 2 5 9 sqlj file extension 4 1 A Accessibility C 1 dotted decimal format of syntax diagrams C 1 keyboard C 1 shortcut keys C 1 syntax diagrams reading in a screen reader C 1 Accessor methods 3 2 4 1 4 4 BEGIN DECLARE SECTION statement 4 1 BEGIN END block 4 1 Binding of variables 1 1 Boolean options 5 6 C CLASSPATH environment variable 3 1 5 1 close method 4 5 Column aliases 4 5 Command options ifxsqlj 5 2 Compiling code 5 1 compliance with standards vii Connecting to a database 3 1 Connection context class A 2 Connection context object A 2 ConnectionManager class 3 1 3 3 A 1 ConnectionManager java file 3 1 Copyright IBM Corp 1996 2013 Curly braces 4 1 Cursors 3 2 4 1 D Database server names s
14. iterator must match the order in which the SQL columns are returned For example the following statement generates a positional iterator class called CustIter with six columns sql iterator CustIter int String String String String String This iterator can hold the result set from the following SELECT statement SELECT customer_num fname Iname addressl address2 phone FROM customer You run the SELECT statement and populate the iterator object with the result set by using an Embedded SQLJ statement of the form sql iterator object SELECT For example CustIter cust_rec sql ctx cust_rec SELECT customer_num fname Iname addressl address2 phone FROM customer B You retrieve data from a positional iterator into host variables using the FETCH INTO statement sql FETCH cust_rec INTO customer_num fname lname address1 address2 phone k The SQLJ translator checks that the types of the host variables in the INTO clause of the FETCH statement match the types of the iterator columns in corresponding positions The types of the SQL columns in the SELECT statement must be compatible with the types of the iterator These type conversions are checked at translation time if ou perform online checking For information about setting up online checking see of SQL and Java type mappings see Online checking on page 5 8 For a listing SOL and Java type mappings on page
15. on the command line or in a property file specified using the props option these options override any options set in sqlj properties files Format of property files In a property file you e Specify one option per line e Begin a line with the symbol to denote a comment Tip The translator ignores empty lines The are for f TT T tions is the same as shown in Parameter field and ariable names on page 4 8 except you replace the initial hyphen with a string followed by a period that indicates to which utility the option is passed You can pass options to the SQLJ translator or the Java compiler however you cannot pass options to the Java interpreter from a property file The strings for specifying utilities are as follows Precede an option with To pass it to this utility Chapter 5 Embedded SQL source code processing 5 7 sqlj SQLJ translator compile Java compiler An example property file looks like this Turn on online checking and specify the user to connect with sqlj user joyce sqlj password x JDBC Driver to connect with sqlj driver com informix jdbc IfxDriver Database URL sqlj url jdbc lt ipaddr gt lt portno gt demo_isqlj informixserver lt INFORMIXSERVER gt Instruct the compiler to output status messages during compile compile verbose Online checking Online checking analyzes the validity of the embedded SQL statements against the database schema user name
16. products and services currently available in your area Any reference to an IBM product program or service is not intended to state or imply that only that IBM product program or service may be used Any functionally equivalent product program or service that does not infringe any IBM intellectual property right may be used instead However it is the user s responsibility to evaluate and verify the operation of any non IBM product program or service IBM may have patents or pending patent applications covering subject matter described in this document The furnishing of this document does not grant you any license to these patents You can send license inquiries in writing to IBM Director of Licensing IBM Corporation North Castle Drive Armonk NY 10504 1785 U S A For license inquiries regarding double byte DBCS information contact the IBM Intellectual Property Department in your country or send inquiries in writing to Intellectual Property Licensing Legal and Intellectual Property Law IBM Japan Ltd 19 21 Nihonbashi Hakozakicho Chuo ku Tokyo 103 8510 Japan The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION AS IS WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS OR IMPLIED INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF NON INFRINGEMENT MERCHANTABILITY O
17. returned as data for any column or output variable QueryTimeout The number of seconds to wait for an SQL operation to complete SQLWarnings Any warnings that occurred during the last SQL operation UpdateCount The number of rows updated inserted or deleted during the last SQL operation SPL routine and function calls You can call a Stored Procedure Language SPL procedure by using the EXECUTE PROCEDURE statement For example sql EXECUTE PROCEDURE proc_name arg_name You can call a stored function by using the EXECUTE FUNCTION statement For example sql EXECUTE FUNCTION func_name func_arg into num SQL and Java type mappings When retrieve data from a database into an iterator object see on page 4 3 or into a host variable you must use Java types that are compatible with the SQL types The following table shows valid conversions from SQL types to Java types SQL type Java type BIGINT BIGSERIAL bigint BLOB bytel BOOLEAN boolean BYTE byte CHAR CHARACTER String CHARACTER VARYING String 4 6 IBM Informix Embedded SQLJ User s Guide SQL type Java type CLOB bytel DATE java sql Date DATETIME java sql Timestamp DECIMAL NUMERIC DEC java math BigDecimal FLOAT DOUBLE PRECISION double INT8 long INTEGER INT int INTERVAL IfxIntervalDF IfxIntervalYMI LVARCHAR String MONEY java math BigDecimal NCHAR NVARCHAR Stri
18. 1 Ludwig Pauli All Sports Supplies 213 Erstwild Court Sunnyvale CA 94086 408 789 8075 s sql INSERT INTO customer VALUES 102 Carole Sadler Sports Spot 785 Geary St San Francisco CA 94117 415 822 1289 3 sql INSERT INTO customer VALUES 103 Philip Currie Phil s Sports 654 Poplar P 0 Box 3498 Palo Alto CA 94303 415 328 4543 E sql INSERT INTO customer VALUES 104 Anthony Higgins Play Ball East Shopping Cntr 422 Bay Road Redwood City CA 94026 415 368 1100 bs catch SQLException e System out printIn INSERT Exception e n System out println Error Code 2 e getErrorCode System err printIn Error Message a oh e getMessage System out printIn System out printIn Running demo program Demo03 System out printin Chapter 3 Fundamentals of embedded SQLJ programs 3 5 Declare Iterator of type CustRec CustRec cust_rec sql cust_rec SELECT FROM customer int row_cnt 0 while cust_rec next System out println System out println CUSTOMER NUMBER cust_rec customer_num System out println FIRST NAME cust_rec fname System out println LAST NAME cust_rec Iname System out println COMPANY cust_rec company System out printIn ADDRESS cust
19. M Informix products These features support e Keyboard only operation e Interfaces that are commonly used by screen readers e The attachment of alternative input and output devices Keyboard navigation This product uses standard Microsoft Windows navigation keys Related accessibility information IBM is committed to making our documentation accessible to persons with disabilities Our publications are available in HTML format so that they can be accessed with assistive technology such as screen reader software IBM and accessibility See the IBM Accessibility Center at http www ibm com able for more information about the IBM commitment to accessibility Dotted decimal syntax diagrams The syntax diagrams in our publications are available in dotted decimal format which is an accessible format that is available only if you are using a screen reader In dotted decimal format each syntax element is written on a separate line If two or more syntax elements are always present together or always absent together the elements can appear on the same line because they can be considered as a single compound syntax element Each line starts with a dotted decimal number for example 3 or 3 1 or 3 1 1 To hear these numbers correctly make sure that your screen reader is set to read punctuation All syntax elements that have the same dotted decimal number for example all syntax elements that have the number 3 1 are mutually exc
20. OSED IN WHOLE OR IN PART EXCEPT AS PERMITTED BY WRITTEN AGREEMENT SIGNED BY AN OFFICER OF IBM CORPORATION THIS MATERIAL IS ALSO COPYRIGHTED AS AN UNPUBLISHED WORK UNDER SECTIONS 104 AND 408 OF TITLE 17 OF THE UNITED STATES CODE UNAUTHORIZED USE COPYING OR OTHER REPRODUCTION IS PROHIBITED BY LAW Title demoUtil java Description Utilities used in the demo programs FF FF FF HF HF HF FF HF HF HF HF FH F HF kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk import java io import java util import java lang import java sql public class demoUti private String driver A 6 IBM Informix Embedded SQL User s Guide private String URL private String myURL private String user private String passwd private int count 0 private int lineno 0 private int errors 0 private boolean end_of_file false private FileInputStream fs null private DataInputStream in null private BufferedReader br null private String line null private StringBuffer read_line null public Connection conn public void executeSQLScript String SQLscript try catch Exception e System out printIn Script File Not Found e printStackTrace in new DataInputStream fs br new BufferedReader new InputStreamReader in line getNextLine read_line line null new StringBuffer new StringBuffer line while end_of_file
21. R FITNESS FOR A PARTICULAR PURPOSE Some states do not allow disclaimer of express or implied warranties in certain transactions therefore this statement may not apply to you This information could include technical inaccuracies or typographical errors Changes are periodically made to the information herein these changes will be incorporated in new editions of the publication IBM may make improvements and or changes in the product s and or the program s described in this publication at any time without notice Any references in this information to non IBM websites are provided for convenience only and do not in any manner serve as an endorsement of those websites The materials at those websites are not part of the materials for this IBM product and use of those websites is at your own risk Copyright IBM Corp 1996 2013 D 1 D 2 IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you Licensees of this program who wish to have information about it for the purpose of enabling i the exchange of information between independently created programs and other programs including this one and ii the mutual use of the information which has been exchanged should contact IBM Corporation J46A G4 555 Bailey Avenue San Jose CA 95141 1003 USA Such information may be available subject to appropriate terms and conditions including in some cases pa
22. SIGNED BY AN OFFICER OF IBM CORPORATION THIS MATERIAL IS ALSO COPYRIGHTED AS AN UNPUBLISHED WORK UNDER SECTIONS 104 AND 408 OF TITLE 17 OF THE UNITED STATES CODE UNAUTHORIZED USE COPYING OR OTHER REPRODUCTION IS PROHIBITED BY LAW Title MultiConnect sqlj Description This demonstrates usage of 2 connection contexts using different URLs t FF FF FF HF HF F HF F HF HF HF HF HF F HF kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk import java sql import java math import java lang import sqlj runtime SQLJ runtime classes import sqlj runtime ref Declare ConnectionContext classes OrdersCtx and ItemsCtx OrdersCtx is related to the orders table which is in orders_db database ItemsCtx is related to the items table which is in items_db database Instances of these classes are used to specify where SQL operations on orders table or items table shld should execute We create the 2 databases using a default context using ConnectionManager For an order from the orders table in the orders_db database we try to query the items table in the items_db database for the line items which make up that order FF FF HF HF HF sql context OrdersCtx sql context ItemsCtx Declare 2 named iterators for Items and Orders Appendix A Embedded SQLJ and database connections A 3 sql iterator OrdersRec Integer order_num Date order_date String po_num Date
23. SQLJ program Chapter 4 The embedded SQLJ SAE Embedded SQLJ statements Host variables SELECT statements that relit a single row Result sets Positional iterators Named iterators Column aliases Iterator methods Positioned updates and deletes SQL query execution and monitoring SPL routine and function calls SQL and Java type mappings Language character sets Java package importation SQLJ reserved names Handling errors Chapter 5 Embedded SQLJ source code deat SQL program translation compiling and running ea The ifxsqlj command Options for the ifxsqlj command Online checking The ifxprofp tool Appendix A Embedded SQLJ and database connections The ConnectionManager class Database URLs Nondefault connection contexts MultiConnect sqlj sample program Appendix B Descriptions of sample programs included with IBM Informix Embedded SQLJ Copyright IBM Corp 1996 2013 4 2 4 2 A 1 A 3 B 1 iii Appendix C Accessibility Accessibility features for IBM Informix products Accessibility features Keyboard navigation Related accessibility informatio IBM and accessibility Dotted decimal syntax diagrams Notices Trademarks Index iv IBM Informix Embedded SQLJ User s Guide C l D 1 D 3 Introduction This introduction provides an overview of the information in this manual and describes the conventions it uses Abou
24. TION IS PROHIBITED BY LAW Title Demo03 sqlj Description This demonstrates simple iterator use kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk import java sql import sqlj runtime SQLJ runtime classes sql iterator CustRec int customer_num String fname Stri Stri Stri ng Iname ng company ng addressl String address2 String city Stri Stri Stri J ng state ng zipcode ng phone public class Demo03 public static void main String args throws SQLException Demo03 demo03 new Demo03 try demo 3 runDemo catch SQLException s System err printIn Error running demo program s System err printIn Error Code Sch oe s getErrorCode System err printIn Error Message ad s getMessage Initialize database connection thru Connection Manager Demo03 ConnectionManager initContext void runDemo throws SQLException drop_db sql CREATE DATABASE demo_sqlj WITH LOG MODE ANSI sql create table customer IBM Informix Embedded SQL User s Guide Hs customer_num serial 101 fname char 15 Iname char 15 company char 20 addressl char 20 address2 char 20 city char 15 state char 2 zipcode char 5 phone char 18 primary key customer_num Insert 4 Records in a try block try sql INSERT INTO customer VALUES 10
25. _rec addressl n n cust_rec address2 System out println CITY cust_rec city System out printlIn STATE cust_rec state System out println ZIPCODE cust_rec zipcode System out println PHONE cust_rec phone System out println System out println n n row_cnt System out printIn Total No Of rows Selected row_cnt cust_rec close System out printIn n n n n n drop_db void drop_db throws SQLException try catch SQLException s sql drop database demo_sqlj 3 6 IBM Informix Embedded SQL User s Guide Chapter 4 The embedded SQLJ language This chapter provides detailed information about using the Embedded SQLJ language For syntax and reference information about specific statements refer to the IBM Informix Guide to SQL Syntax Embedded SQLJ has some differences from the earlier embedded SQL languages defined by ANSI ISO ESQL C ESQL ADA ESQL FORTRAN ESQL COBOL and ESQL PL 1 The major differences are as follows e The SQL connection statement of traditional embedded SQL is replaced by a Java connection context object This approach enables Embedded SQL programs to open multiple database connections simultaneously e In Embedded SQLJ there is no host variable definition section preceded by a BEGIN DECLARE SECTION statement and terminated by an END DECLARE SECTION statement A
26. _sJT is a reserved prefix for generated variable names Do not use this prefix for the names of e Variables declared within blocks that include SQL statements e Parameters to methods that contain SQL statements e Fields in classes that contain SOL statements or whose subclasses contain SQL statements IBM Informix Embedded SQL User s Guide Class names and filenames Do not declare classes that conflict with the names of internal classes Do not create files that conflict with generated internal resource files The SQL translator creates internal classes and resource files for use by generated code The names of these files and classes have a prefix composed of the name of the original input file followed by the string _SJ For example if you translate a file called File1 sqlj that uses the package COM foo the names of some of the internal classes produced are e COM foo File1_SJInternalClass e COM foo File1_SJProfileKeys e COM foo File1_SJInternalClass Inner e COM foo File1_SJProfile0 e COM foo File1_SJProfile1 Generated files for these internal classes which are created in the same directory as the input file File1 sqlj are called e File1_SJInternalClass java includes the class COM foo File1_SJInternalClass Inner e File1_SJProfileKeys java e File1_SJProfile0 ser e File1_SJProfile1 ser Files with the ser extension are internal resource files that contain information about SQL operations in an sq j file
27. ber followed by the symbol and a syntax element indicates that the syntax element is the default option for all syntax elements that share the same dotted decimal number Only one of the syntax elements that share the same dotted decimal number can specify a symbol For example if you hear the lines 2 FILE 2 1 KEEP and 2 1 DELETE you know that KEEP is the default option for the FILE keyword In this example if you include the FILE keyword but do not specify an option default option KEEP is applied A default option also applies to the next higher dotted decimal number In this example if the FILE keyword is omitted default FILE KEEP is used However if you hear the lines 2 FILE 2 1 2 1 1 KEEP and 2 1 1 DELETE the default option KEEP only applies to the next higher dotted decimal number 2 1 which does not have an associated keyword and does not apply to 2 FILE Nothing is used if the keyword FILE is omitted Specifies a syntax element that can be repeated zero or more times A dotted decimal number followed by the symbol indicates that this syntax element can be used zero or more times that is it is optional and can be IBM Informix Embedded SQLJ User s Guide repeated For example if you hear the line 5 1 data area you know that you can include more than one data area or you can include none If you hear the lines 3 3 HOST and 3 STATE you know that you can include HOST STATE both together or nothing
28. c 158 58 9 121 1527 informixserver tulua2 String user rdtest String password 1RDSRDS set_driver driver set_url url set_user user set_passwd password getConnect Create the schema and the tables by running the SQL scripts executeSQLScript schema sq1 conn close We now set up the Connection context OrdersCtx url jdbc 158 58 9 121 1527 orders_db informixserver tulua2 set_url url o_ctx new OrdersCtx getConnect Change the url to reflect items database Here we are changing the database name the machine name and the port no could also be different url jdbc 158 58 9 121 1527 items_db informixserver tulua2 set_url url i_ctx new ItemsCtx getConnect Declare orders_rec of type OrdersRec OrdersRec orders_rec Using context o_ctx query orders sql o_ctx orders rec SELECT order_num order_date po_num paid_date FROM orders J while orders_rec next System out pri ntl n 4 2 System out print ORDER NUMBER orders_rec order_num t t System out println ORDER DATE orders_rec order_date System out print PURCHASE ORDER NUMBER orders_rec po_num t System out printIn PAID DATE orders_rec paid_date System out printIn System out print n int ord_no orders_rec order_num intValue printItemRec fetchItemRec ord_no
29. ded SQLJ program can call the JDBC API to perform a dynamic operation the SQLJ connection context object that you use to connect an Embedded SQLJ program to the database contains a JDBC Connection object that you can use to create JDBC statement objects If you are using static SQL Embedded SQL provides the following advantages e Default connection context You only need to set the default connection context once within a program then every subsequent Embedded SQLJ statement uses this connection context unless you specify otherwise e Reduced statement complexity For example you do not need to explicitly bind each variable Embedded SQL performs binding for you Generally this feature allows you to create smaller programs than with the JDBC API e Compile time syntax and semantics checking The Embedded SQLJ translator checks the syntax of SQL statements e Compile time type checking The Embedded SQL translator and the Java compiler check that the Java data types of arguments are compatible with the SQL data types of the SQL operation e Compile time schema checking You can connect to a sample database schema during translation to check that your program uses valid SQL statements for the tables views columns stored procedures and so on in your sample IBM Informix Embedded SQL User s Guide Chapter 2 Preparation to use embedded SQLJ This chapter describes the software you must have to develop Embedded SQLJ programs a
30. e linenot te getMessage System out printIn SQLState e getSQLState System out printIn ErrorCode e getErrorCode System out printIn Offending statement cmd e printStackTrace public void set_driver String driver public void set_url String url this driver driver this URL url P void set_user String userName this user userName ere void set_passwd String passwd this passwd passwd poli void connSetup try IBM Informix Embedded SQLJ User s Guide Class forName driver catch Exception e System out printIn Failed to load IBM Informix JDBC driver e printStackTrace myURL URL myURL myURL user user spassword passwd public Connection getConnect connSetup try conn DriverManager getConnection myURL catch SQLException e System out printIn Connect Error e getErrorCode System out printIn Failed to connect e toString e printStackTrace return conn public Connection getConnect Connection i_conn connSetup try i_conn DriverManager getConnection myURL catch SQLException e System out printIn Connect Error e getErrorCode System out printIn Failed to connect e toString e printStackTrace return i_conn Appendix A Embedded SQLJ and database connections A 9 A 10 IBM Informix Embedded SQL User s Guide Appe
31. ed products are fully compliant with SQL 92 Entry Level published as ANSI X3 135 1992 which is identical to ISO 9075 1992 In addition many features of IBM Informix database servers comply with the SQL 92 Intermediate and Full Level and X Open SQL Common Applications Environment CAE standards The IBM Informix Geodetic DataBlade Module supports a subset of the data types from the Spatial Data Transfer Standard SDTS Federal Information Processing Standard 173 as referenced by the document Content Standard for Geospatial Metadata Federal Geographic Data Committee June 8 1994 FGDC Metadata Standard Introduction vii viii IBM Informix Embedded SQL User s Guide Chapter 1 Introduction to IBM Informix embedded SQLJ This chapter explains what you can do with IBM Informix Embedded SQLJ and provides an overview of how embedded SQLJ works What is embedded SQLJ IBM Informix Embedded SQL enables you to embed SQL statements in your Java programs IBM Informix Embedded SQLJ consists of e The SQL translator which translates SQL code into Java code e A set of Java classes that provide runtime support for SQLJ programs IBM Informix Embedded SQL includes the standard SQL implementation as defined by the SQLJ consortium plus specific Informix extensions The rest of this manual refers to IBM Informix Embedded SQL as Embedded SQL The standard SQL implementation is referred to as traditional Embedded SQL How does e
32. ept as noted the code is not specific to any single IBM Informix application development tool If only SQL statements are listed in the example they are not delimited by semicolons For instance you might see the code in the following example CONNECT TO stores_demo DELETE FROM customer WHERE customer_num 121 IBM Informix Embedded SQLJ User s Guide COMMIT WORK DISCONNECT CURRENT To use this SQL code for a specific product you must apply the syntax rules for that product For example if you are using an SQL API you must use EXEC SQL at the start of each statement and a semicolon or other appropriate delimiter at the end of the statement If you are using DB Access you must delimit multiple statements with semicolons Tip Ellipsis points in a code example indicate that more code would be added in a full application but it is not necessary to show it to describe the concept being discussed For detailed directions on using SQL statements for a particular application development tool or SQL API see the documentation for your product Additional documentation Documentation about this release of IBM Informix products is available in various formats You can access Informix technical information such as information centers technotes white papers and IBM Redbooks publications online at Compliance with industry standards IBM Informix products are compliant with various standards IBM Informix SQL bas
33. er class for a particular connection context as in online ctxclass2 sqlj semantics JdbcChecker You must specify a user name with the user option for online checking to occur The password url and driver options must be appropriately set as well password Specifies a password for the user name set with the user option If you specify the user option but not the password option the translator prompts you for the password If you are using multiple connection contexts the setting for password for the default connection context also applies to any connection context that does not have a specific setting ser2class url user Set this flag to true to convert the generated ser files to class files This is necessary if you are creating an applet to be run from a browser such as Netscape 4 0 that does not support loading a serialized object from a resource file The original ser file is not saved Specifies a JDBC URL for establishing a database connection for online checking see Database URLs on page A 1 and Online checking on page 5 8 The URL can include a host name a port number and an Informix database name The format is jdbc informix sqli lt ip address gt lt domain name gt lt port number gt lt dbname gt INFORMIXSERVER lt server name gt user lt username gt password lt password gt lt name gt lt value gt lt name gt lt value gt If you are using mul
34. etting in database URLs A 1 Database servers 2 1 Database URLs 3 1 A 1 Databases connecting to 3 1 Default connection context 1 1 3 1 Deletes positioned 4 5 Demo01 sqlj program B 1 Demo02 sqlj program B 1 Demo03 sqlj program 3 3 B 1 Demo04 sqlj program B 1 Demo05 sqlj program B 1 Demo06 sqlj program B 1 demoUtiljava program A 3 Disabilities visual reading syntax diagrams C 1 Disability C 1 Domain names setting in database URLs A 1 Dotted decimal format of syntax diagrams C 1 Dynamic SQL 4 1 E Embedded SQL traditional 4 1 END DECLARE SECTION statement 4 1 endFetch method 4 5 Errors 4 9 ESQL C 4 1 EXECUTE FUNCTION statement 4 1 4 6 EXECUTE PROCEDURE statement 4 1 4 6 Execution context 4 5 F FETCH statement 3 2 4 1 4 2 4 3 file encoding property 4 8 5 2 Files ser 5 1 5 2 5 9 ConnectionManagerjava 3 1 ifxjdbejar 5 1 ifxsqljjar 5 1 ifxtoolsjar 5 1 iterator_name class 5 1 java properties 4 8 profilekeys class 5 1 Property files 5 6 SQLChecker cache 5 2 sqlj properties 5 6 Functions 4 6 G getExecutionContext method 4 5 getMaxFieldSize method 4 5 getMaxRows method 4 5 getQueryTimeout method 4 5 getSQLWarnings method 4 5 getUpdateCount method 4 5 GLS feature 5 2 H Host variables 3 1 4 1 4 2 IBM Informix JDBC Driver 1 1 2 1 A 1 ifxjdbcjar file 5 1 ifxprofp tool 5 9 ifxsqlj command 5 1 ifxsqljjar file 5 1 ifxtoolsjar file 5 1 industry standards vii Informix databa
35. formation about the syntax elements For example the lines 5 1 5 1 LASTRUN and 5 1 DELETE mean that if you use more than one of the LASTRUN and DELETE syntax elements the elements must be separated by a comma If no separator is given assume that you use a blank to separate each syntax element If a syntax element is preceded by the symbol that element is defined elsewhere The string following the symbol is the name of a syntax fragment rather than a literal For example the line 2 1 0P1 refers to a separate syntax fragment OP1 The following words and symbols are used next to the dotted decimal numbers Specifies an optional syntax element A dotted decimal number followed by the symbol indicates that all the syntax elements with a corresponding dotted decimal number and any subordinate syntax elements are optional If there is only one syntax element with a dotted decimal number the symbol is displayed on the same line as the syntax element for example 5 NOTIFY If there is more than one syntax element with a dotted decimal number the symbol is displayed on a line by itself followed by the syntax elements that are optional For example if you hear the lines 5 5 NOTIFY and 5 UPDATE you know that syntax elements NOTIFY and UPDATE are optional that is you can choose one or none of them The symbol is equivalent to a bypass line in a railroad diagram Specifies a default syntax element A dotted decimal num
36. fxsqlj command is running version warn Displays the version of Embedded SQLJ you are using No translation or compilation is performed when you specify the version option Specifies a list of flags in a comma separated string for controlling the display of warning and information messages during translation The flags are e all none Turns on or off all warnings and information messages e null default nonull Specifies whether the translator checks nullable columns and nullable Java variable types for conversion loss when data is transferred between database columns and Java host variables The translator must connect to the database for this option to be in effect e precision default noprecision Specifies whether the translator checks for loss of precision when data is transferred between database columns and Java variables The translator must connect to the database for this option to be in effect e portable default noportable Turns on or off warning messages about the portability of Embedded SQL statements e strict default nostrict Specifies whether the translator checks named iterators against the columns returned by a SELECT statement and issues a warning for any mismatches The translator must connect to the database for this option to be in effect e verbose default noverbose Turns on or off additional information messages about the translation process Chapter 5 Embedded SQL source code processing 5 3 T
37. h you want to connect If you do not specify the name of a database a connection is made to the Informix database server server name Yes The name of the Informix server to which you want to connect This is the value of the INFORMIXSERVER environment variable The INFORMIXSERVER environment variable is required in the database URL unless it is included in the property list username Yes The name of the user you want to connect to the Informix database or database server as password Yes The password of the user specified by username name value No A name value pair that specifies a value for the Informix environment variable contained in the name variable recognized by either IBM Informix JDBC Driver or Informix database servers The value of name is case insensitive For information about environment variables supported by IBM Informix JDBC Driver and how to set them refer to the IBM Informix JDBC Driver Programmer s Guide Nondefault connection contexts This section explains how to use nondefault connection contexts Embedded SQLJ uses a connection context object to manage the connection to the database in which you want an SQL statement to execute You can specify different connection context objects for different SQL statements in the same Embedded SQL program as shown in the sample program MultiConnect sqlj included in this section To use a nondefault connection context 1 Define the connection c
38. he translator must connect to the database for this option to be in effect For example the following setting of the warn option turns off all warnings and then turns on the precision and nullability checks warn none null precision Advanced options for the ifxsqlj command The following table lists the advanced options available for use with the java ifxsqlj command Many of these options are for online checking which is discussed in Online checking on page 5 8 Option Description cache Turns on the caching of results from online checking Caching saves you from unnecessary connections to the database in subsequent runs of the translator for the same file Results are written to the file SQLChecker cache in your current directory The cache holds serialized representations of all SQL statements that translated without errors or warnings The cache is cumulative and grows through successive invocations of the translator You empty the cache by deleting the SQLChecker cache file Caching is off by default you turn caching on by setting the cache option to true 1 or on for example cache true You turn caching off by setting the option to false 0 or off compile Set this flag to false to disable processing of java files by the compiler This applies to generated java files and to java files specified on the command line compiler executable Specifies a particular Java compiler for the java ifxsqlj command to u
39. ility see the IBM Informix JDBC release notes Assumptions about your locale IBM Informix products can support many languages cultures and code sets All the information related to character set collation and representation of numeric data currency date and time that is used by a language within a given territory and encoding is brought together in a single environment called a Global Language Support GLS locale Copyright IBM Corp 1996 2013 vV The IBM Informix OLE DB Provider follows the ISO string formats for date time and money as defined by the Microsoft OLE DB standards You can override that default by setting an Informix environment variable or registry entry such as DBDATE If you use Simple Network Management Protocol SNMP in your Informix environment note that the protocols GNMPv1 and SNMPv2 recognize only English code sets For more information see the topic about GLS and SNMP in the IBM Informix SNMP Subagent Guide The examples in this publication are written with the assumption that you are using one of these locales en_us 8859 1 ISO 8859 1 on UNIX platforms or en_us 1252 Microsoft 1252 in Windows environments These locales support U S English format conventions for displaying and entering date time number and currency values They also support the ISO 8859 1 code set on UNIX and Linux or the Microsoft 1252 code set on Windows which includes the ASCII code set plus many 8 bit characters s
40. ion that you specify for online checking are database URLs For information about online checking see Online checking on page 5 8 Database URLs specify the subprotocol the database connectivity mechanism the database or server identifier and a list of properties Your Embedded SQLJ program uses IBM Informix JDBC Driver to connect to an Informix database IBM Informix JDBC Driver supports database URLs of the following format jdbc informix sqli ip address host name port number dbname INFORMIXSERVER server name user user password password name value name value In the preceding syntax e Curly brackets together with vertical lines denote more than one choice of variable e Italics denote a variable value e Brackets denote an optional value e Words or symbols not enclosed in brackets are required INFORMIXSERVER for example Important Spaces are not allowed in the database URL The following table describes the variable parts of the database URL Copyright IBM Corp 1996 2013 A 1 Database URL Variable Required Description ip address or Yes The IP address or the domain name of the computer running the Informix database server domain name An example of an IP address is 123 45 67 89 An example of a domain name is myhost com port number Yes The port number of the Informix database server dbname No The name of the Informix database to whic
41. ll legal Java variables can be used as host variables e Embedded SQLJ does not include the WHENEVER GOTO CONTINUE statement because Java has well developed rules for declaring and handling exceptions e Embedded SQLJ uses iterator objects rather than cursors to manage result sets A result set iterator is a Java object from which you can retrieve the data returned by a SELECT statement Unlike cursors iterator objects can be passed as parameters to methods e Embedded SQLJ supports access to data in columns of iterator objects by name through generated accessor methods You can also access this data by position using the FETCH INTO statement as used by traditional embedded SQL e Unlike other host languages Java allows null data Therefore you do not need to use null indicator variables with Embedded SQL e Embedded SQLJ does not include dynamic SQL you must use JDBC instead The files containing your Embedded SQL source code must have the extension sqlj for example custapp sq j Embedded SQLJ statements To identify Embedded SQLJ statements to the SQLJ translator each SQLJ statement must begin with sql The SQLJ translator recognizes sql and translates the statement into Java code SQL statements Embedded SQLJ supports SQL statements at the SQL92 Entry level with the following additions e The EXECUTE PROCEDURE statement for calling SPL routines and user defined routines e The EXECUTE FUNCTION statement
42. lue is equivalent to the SQL NULL value Language character sets Embedded SQLJ supports Java s Unicode escape sequences Also if you set your Java property file encoding to 8859 _1 or do not set it at all you can use the Latin 1 character set To process files with a different encoding for example SJIS you have the following choices e Use the JDK tool native2ascii to convert the native encoded source to a source with ASCII encoding e Set file encoding SJIS in java properties in the Java home directory e Invoke the SQL translator using the following command java ifxsqlj Dfile encoding SJIS file sqlj Java package importation Your Embedded SQLJ programs need to import the JDBC API java sql and SQL runtime sqlj runtime packages to which they refer The classes you are likely to commonly use are e In package java sql for the JDBC API The SQLException class includes all runtime exceptions raised by Embedded SQLJ and classes you explicitly use such as java sql Date java sql ResultSet e In package sqlj runtime for SQLJ runtime SQL stream types explicitly referenced for example BinaryStream the ConnectionContext class and the reference implementation of Embedded SQLJ classes in sqlj runtime ref SQLJ reserved names 4 8 This section lists names reserved by the SQL translator Do not use these names in your Embedded SQL programming Parameter field and variable names The string
43. lusive alternatives If you hear the lines 3 1 USERID and 3 1 SYSTEMID your syntax can include either USERID or SYSTEMID but not both The dotted decimal numbering level denotes the level of nesting For example if a syntax element with dotted decimal number 3 is followed by a series of syntax elements with dotted decimal number 3 1 all the syntax elements numbered 3 1 are subordinate to the syntax element numbered 3 Copyright IBM Corp 1996 2013 C 1 C 2 Certain words and symbols are used next to the dotted decimal numbers to add information about the syntax elements Occasionally these words and symbols might occur at the beginning of the element itself For ease of identification if the word or symbol is a part of the syntax element the word or symbol is preceded by the backslash character The symbol can be used next to a dotted decimal number to indicate that the syntax element repeats For example syntax element FILE with dotted decimal number 3 is read as 3 FILE Format 3 FILE indicates that syntax element FILE repeats Format 3 FILE indicates that syntax element FILE repeats Characters such as commas which are used to separate a string of syntax elements are shown in the syntax just before the items they separate These characters can appear on the same line as each item or on a separate line with the same dotted decimal number as the relevant items The line can also show another symbol that provides in
44. mbedded SQLJ work When you use Embedded SQLJ you embed SQL statements in your Java source code You use the SQLJ translator to convert the embedded SQL statements to Java source code with calls to JDBC JDBC is the JavaSoft specification of a standard application programming interface API that allows Java programs to access database management systems Finally you use the Java compiler to compile your translated Java program into an executable Java class file as shown in SQLJ Source Java Source Java class File Java source code Java source code Java byte codes with embedded withcallsto withcalls to SQL SQLJ JDBC Java JDBC translator compiler Figure 1 1 Translation and Compilation of an Embedded SQLJ Program When you run your program it u an Informix database as shown in Copyright IBM Corp 1996 2013 ses the IBM Informix JDBC Driver to connect to Figure 1 2 on page 1 2 1 1 1 2 Java executable Calls to JDBC Results from the database JDBC Driver Result sets for SELECT statements Queries and other SQL statements lt gt Figure 1 2 Runtime Architecture for Embedded SQLJ Programs See the IBM Informix JDBC Driver Programmer s Guide for information about using the IBM Informix JDBC Driver Embedded SQLJ versus JDBC Embedded SQLJ does not support dynamic SQL you must use the JDBC API if you want to use dynamic SQL Your Embed
45. ments are case sensitive and so are host variables You use SELECT INTO statements for queries that return a single record for queries that return multiple rows a result set you use an iterator object described in the next section Result sets and iterators 3 2 Embedded SQLJ uses result set iterator objects rather than cursors to manage result sets cursors are used by languages such as IBM Informix ESQL C A result set iterator is a Java object from which you can retrieve the data returned by a SELECT statement Unlike cursors iterator objects can be passed as parameters to a method Important Names of iterator classes must be unique within an application When you declare an iterator class you specify a set of Java variables to match the SQL columns that your SELECT statement returns There are two types of iterators positional and named Positional iterators The order of declaration of the Java variables of a positional iterator must match the order in which the SQL columns are returned You use a FETCH INTO statement to retrieve data from a positional iterator For example the following statement generates a positional iterator class with five columns called CustlIter sql iterator CustIter int String String String String String This iterator can hold the result set from the following SELECT statement SELECT customer_num fname Iname addressl address2 phone FROM customer Named iterato
46. nd how to set up this software What components do you need You need the following software to create and run SQL programs e IBM Informix Embedded SQL e To create your programs you must use the JavaSoft software Java Development Kit JDK Version 1 4 2 or later or any Java software compatible with JDK 1 4 2 e IBM Informix JDBC Driver Version 3 50 or later to enable your programs to connect to the database server e IBM Informix Version 11 10 and later Software Set up Before you install Embedded SQLJ you must already have installed the JavaSoft software Java Development Kit JDK Version 1 4 2 or later or any Java software compatible with JDK 1 4 2 For more information about the Java language see http www oracle com technetwork java index html For further information about installing and using IBM Informix JDBC Driver see the IBM Informix JDBC Driver Programmer s Guide If you do not already have your Informix server installed refer to the IBM Informix Installation Guide that accompanies that software Program Examples IBM Informix Embedded SQLJ includes sample online programs in the demo sq j directory The README file in this directory briefly explains what each of the programs demonstrates and how to set up compile and run the programs The programs also enable you to verify that IBM Informix Embedded SQLJ and IBM Informix JDBC Driver are correctly installed The examples in this manual are taken from
47. ndix B Descriptions of sample programs included with IBM Informix Embedded SQLJ The following table lists and describes the online sample programs that are included with IBM Informix Embedded SQL Demo Program Name Description Demo01 sq j Demonstrates a simple connection to the database Demo02 sqlj Demonstrates a simple SELECT statement and the use of host variables Demo03 sqlj Demonstrates the use of a named iterator Demo04 sqlj Demonstrates the use of a positional iterator Demo05 sqlj Demonstrates interoperability between a JDBC ResultSet object and an SQL iterator Demo06 sqlj Demonstrates interoperability between a JDBC Connection object and an SQLJ connection context object The sample programs are located in the IFXJLOCATION demo sqlj directory IFXJLOCATION refers to the directory where you chose to install Embedded SQLJ The README file in the directory explains how to compile and run the programs Copyright IBM Corp 1996 2013 B 1 B 2 IBM Informix Embedded SQL User s Guide Appendix C Accessibility IBM strives to provide products with usable access for everyone regardless of age or ability Accessibility features for IBM Informix products Accessibility features help a user who has a physical disability such as restricted mobility or limited vision to use information technology products successfully Accessibility features The following list includes the major accessibility features in IB
48. ng SERIAL int SERIAL8 long SMALLFLOAT floafl SMALLINT short TEXT String VARCHAR String Table notes 1 IfxIntervalYM and IfxIntervalDF are IBM Informix extensions to JDBC 2 0 2 This mapping is JDBC compliant You can use IBM Informix JDBC Driver to map SMALLFLOAT data type via the JDBC FLOAT data type to the Java double data type for backward compatibility by setting the IFX_GET_SMFLOAT_AS FLOAT environment variable to 1 You must also use compatible Java types for host variables that are arguments to SQL operations This table shows valid conversions from Java types to SQL types Java type SQL type java math BigDecimal DECIMAL boolean BOOLEAN byte BYTE java sql Date DATE double FLOAT float SMALLFLOAT int INT long INT8 short SMALLINT String CHAR java sql Time DATETIME java sql Timestamp DATETIME com informix jdbc IfxIntervalDF INTERVAL com informix jdbc IfxIntervalYM INTERVAL Chapter 4 The embedded SQLJ language 4 7 Table note 1 This mapping is JOBC compliant You can use IBM Informix JDBC Driver to map the Java double data type via the JOBC FLOAT data type to the IBM Informix SMALLFLOAT data type for backward compatibility by setting the IFX_GET_SMFLOAT_AS FLOAT environment variable to 1 Important Unlike other host languages for example C Java allows null data Therefore you do not need to use null indicator variables with Embedded SQL The Java null va
49. ontext class by using an Embedded SQLJ connection statement The syntax of the connection statement is as follows sql modifiers context java_class_name modifiers A list of Java class modifiers for example public java_class_name The name of the Java class of the new connection context A 2 IBM Informix Embedded SQL User s Guide 2 Create a connection context object for connecting to the database 3 Specify the connection context object in your Embedded SQL statement in parentheses following the sq string MultiConnect sqlj sample program The sample program MultiConnect sqlj creates two databases with one table each Orders and Items and inserts two records in the Orders table and corresponding records in the Items table The program prints the order line items for all the orders from both tables which exist in different databases by creating separate connection contexts for each database MultiConnect sqlj calls the methods executeSQLScript and getConnect These methods are contained in demoUtil java which follows this program BRK k k ERA e k ke AKER A KERIKERI KKK KEIRA KK KIKI KKK AKER KBAR AKAIKE IKE EAE IBM CORPORATION PROPRIETARY DATA THIS DOCUMENT CONTAINS TRADE SECRET DATA WHICH IS THE PROPERTY OF IBM CORPORATION THIS DOCUMENT IS SUBMITTED TO RECIPIENT IN CONFIDENCE INFORMATION CONTAINED HEREIN MAY NOT BE USED COPIED OR DISCLOSED IN WHOLE OR IN PART EXCEPT AS PERMITTED BY WRITTEN AGREEMENT
50. or update_statement The current row of that iterator object is deleted or updated SQL query execution and monitoring You can monitor and modify the execution of an SQL query by using the execution context associated with it An execution context is an instance of the class sqlj runtime ExecutionContext an execution context is associated with each executable SQL operation in an Embedded SQLJ program Chapter 4 The embedded SQLJ language 4 5 You can supply an execution context explicitly for an SQL statement sql execCtx SQL_statement If you do not explicitly supply an execution context the SQL statement uses the default execution context for the connection context you are using If you want to supply an explicit connection context and an explicit execution context the SOL statement looks like this sql connCtx execCtx SQL_statement You use the getExecutionContext method of the connection context to obtain that connection s default execution context The execution context object has attributes and methods that provide information about an SQL operation and the ability to modify its execution For each of the following attributes there is a method called getattribute that reads the value of the attribute and a method called setattribute that sets its value The attributes are Attribute Description MaxRows The maximum number of rows a query can return MaxFieldSize The maximum number of bytes that can be
51. paid_date js sql iterator ItemsRec Short item_num int order_num Short stock_num String manu_code Integer quantity BigDecimal total_price public class MultiConnect extends demoUtil private OrdersCtx o ctx null private ItemsCtx i_ctx null private DefaultContext ctx null The constructor sets up a default database context MultiConnect Initialize database connection thru Connection Manager and create a default context ctx ConnectionManager initContext public static void main String args throws SQLException MultiConnect mc_ob new MultiConnect try System out printIn Running demo program MultiConnect mc_ob runDemo Close the connection mc_ob o_ctx close mc_ob i_ctx close catch SQLException s System err printIn Error running demo program s System err printIn Error Code ote s getErrorCode System err printIn Error Message ste s getMessage void runDemo throws SQLException We drop the 2 databases using the default context drop_db x We create the 2 databases needed for the program using the x default Connection Context sql ctx CREATE DATABASE orders_db WITH LOG MODE ANSI A 4 IBM Informix Embedded SQLJ User s Guide sql ctx CREATE DATABASE items db WITH LOG MODE ANSI ctx close String driver com informix jdbc IfxDriver String url jdb
52. password and database you specify Online checking performs the following operations e Passes SQL data manipulation statements DML to the database to verify their syntax and semantics and their validity for the database schema e Checks stored procedures and functions for overloading e Runs the checks covered by off line checking Off line checking verifies SQL syntax and usage of Java types there is no connection to a database for off line checking To set up online checking you use the following options with the java ifxsqlj command or set them in a property file user password url and driver These options are described in Advanced options for the ifxsqlj command on page 5 4 user and password options You enable online checking by setting the user option The user option also supplies the user name for the database connection to be used for checking You do not have to specify the same database or user name for online checking as the application uses at runtime In the simplest case you supply a user name with the user option and online checking is performed using the default connection context as in user joyce You can supply the password for the user name by using the password option or by combining the password with the user name for example user joyce jcs123 or user joyce password jcs123 To disable online checking on the command line set the user option to an empty value as in
53. ram Demo03 sqlj demonstrates the use of a named iterator to retrieve data from a database This simple program outlines a standard sequence for many Embedded SQL programs 1 Import necessary Java classes 2 Declare an iterator class 3 Define the main method All Java applications have a method called main which is the entry point for the application where the interpreter starts executing the program 4 Connect to the database The constructor of the application makes the connection to the database by calling the initContext method of the ConnectionManager class a Run queries D Create an iterator object and populate it by running a query Handle the results Close the iterator N EF e k k ke k ke dek k e k k dek k E IKEA KKK KK K KE E K K KKK KKK KKK K K E K KER K AK K IKEA K K K K Kk K k k K IBM CORPORATION PROPRIETARY DATA THIS DOCUMENT CONTAINS TRADE SECRET DATA WHICH IS THE PROPERTY OF IBM CORPORATION THIS DOCUMENT IS SUBMITTED TO RECIPIENT IN t FF F Chapter 3 Fundamentals of embedded SQLJ programs 3 3 3 4 F FF F HF HF HF HF FH F HF CONFIDENCE INFORMATION CONTAINED HEREIN MAY NOT BE USED COPIED OR DISCLOSED IN WHOLE OR IN PART EXCEPT AS PERMITTED BY WRITTEN AGREEMENT SIGNED BY AN OFFICER OF IBM CORPORATION THIS MATERIAL IS ALSO COPYRIGHTED AS AN UNPUBLISHED WORK UNDER SECTIONS 104 AND 408 OF TITLE 17 OF THE UNITED STATES CODE UNAUTHORIZED USE COPYING OR OTHER REPRODUC
54. rs The name of each Java variable of a named iterator must match the name of a column returned by your SELECT statement order is irrelevant The matching of SQL column name and iterator column name is case insensitive IBM Informix Embedded SQL User s Guide You use accessor methods of the same name as each iterator column to obtain the returned data as shown in the example in A simple embedded SQL program The SQLJ translator uses the iterator column names to create accessor methods Iterator column names are case sensitive therefore you must use the correct case when you specify an accessor method You cannot use the FETCH INTO statement with named iterators For example the following statement generates a named iterator class called CustRec sql iterator CustRec int customer_num String fname String Iname String company String addressl String address2 String city String state String zipcode String phone s This iterator class can hold the result set of any query that returns the columns defined in the iterator class The result set from the query can have more columns than the iterator class but the iterator class cannot have more columns than the result set For example this iterator class can hold the result set of the following query because the iterator columns include all of the columns in the customer table SELECT FROM customer A simple embedded SQLJ program This sample prog
55. s java ifxsqlj optionlist filelist optionlist A set of options separated by spaces Some options have prefixes to indicate they are to be passed to utilities other than the SQLJ translator such as the Java compiler filelist A list of filenames separated by spaces for example filel sqlj file2 sqlj You must include the absolute or relative path to the files in filelist The files can have the extension sqlj or java You can specify sqlj files together with java files on the same command line If you have sqlj and java files that require access to code in each other s file enter all of these files on the command line for the same execution of the java ifxsqlj command You can use an asterisk as a wildcard to specify filenames for example c sqlj processes all files beginning with c that have the extension Sqlj When you run the java ifxsqlj command your CLASSPATH environment variable must be set to include any directories that contain class files and ser files the translator needs to access for type resolution of variables in your Embedded SQLJ source code Basic options for the ifxsqlj command The following table lists the basic options available for use with the java ifxsqlj command Option Description d Specifies the root output directory for generated ser and class files If you do not specify this option files are generated under the directory of the input sqlj file dir Specifies the root ou
56. se If not specified the translator uses javac If you do not specify a directory path the java ifxsqlj command searches for the executable according to the setting of your PATH environment variable compiler encoding flag Set this flag to false to prevent the value of the SQLJ encoding option from being automatically passed to the compiler compiler output file If you have instructed the Java compiler to output its results to a file use the compiler output file option to specify the filename driver Specifies a list of JDBC drivers that can b used to interpret JDBC connection URLs for online checking see Online checking on page 5 8 You specify a class name or a comma separated list of class names For example specify IBM Informix JDBC Driver as follows driver com informix jdbc IfxDriver offline Specifies a Java class to implement off line checking The default off line checker class is sqlj semantics OfflineChecker 5 4 IBM Informix Embedded SQL User s Guide online Off line checking only runs when online checking does not either because online checking was not enabled or because it stopped because of error Off line checking verifies SQL syntax and the usage of Java types With off line checking there is no connection to the database Specifies a Java class or list of classes to implement online checking The default online checker class is sqlj semantics JdbcChecker You can specify an online check
57. se servers 2 1 INFORMIXSERVER environment variable A 1 initContext method 3 1 3 3 A 1 Internal resource files 5 1 IP addresses setting in database URLs A 1 isClosed method 4 5 Iterator objects 3 2 3 3 4 1 4 3 iterator_name class file 5 1 J Java compiler 1 1 Java Development Kit JDK 2 1 Java interpreter 5 1 Java types 4 6 java properties file 4 8 JDBC 1 1 4 8 5 2 L Language character sets 4 8 Latin 1 character set 4 8 Line numbers 5 2 M main method 3 3 MultiConnect sqlj program A 2 Multiple database connections 4 1 N Name value pairs of database URLs A 1 Named iterators 3 2 4 4 native2ascii tool 4 8 newConnection method A 1 next method 4 4 4 5 Nondefault connections A 2 Null data 4 1 Null indicator variables 4 6 O Off line checking 5 8 On line checking 5 8 Online checking 5 2 X 2 IBM Informix Embedded SQLJ User s Guide Output directory 5 2 P Passwords setting in database URLs A 1 PATH environment variable 5 2 Port numbers setting in database URLs A 1 Positional iterators 3 2 4 3 Positioned updates deletes 4 5 Preprocessing source code 5 1 profilekeys class file 5 1 Property files 5 6 R README file 2 1 B 1 Reserved names 4 8 Result sets 3 2 4 3 Root output directory 5 2 rowCount method 4 5 Running Embedded SQLJ programs 5 1 S Sample programs 2 1 3 3 B 1 Schema checking 1 1 Screen reader reading syntax diagrams C 1 SELECT statements
58. t also include the path to the interpreter If you do not specify a particular Java interpreter using this option the translator uses java as a default The vm option must be specified on the command line you cannot set it in a property file Options for the ifxsqlj command 5 6 You specify options for the java ifxsqlj command either_on the command line or in Us a property file Command line options are discussed in ifxsqlj command line TE files are discussed in Format of property files on page 5 7 For Boolean options those that are either on or off you can set the option simply by specifying the option name for example 1inemap You can also set the option to TRUE as in linemap true To turn off a Boolean option you must set it to FALSE for example inemap false You can also set Boolean options to yes or no or to 1 or 0 ifxsqlj command line options Options on the command line override any options set in default files If the same option appears more than once on the command line the translator uses the final rightmost option s value Command line option names are case sensitive You can attach prefixes to options to pass the option to the Java compiler or to the Java interpreter If you do not use a prefix the option is passed to the SQL translator The prefixes are C Passes compiler options to the Java compiler as shown in the following example C classpath user jdk bin
59. t this publication This publication contains information about using IBM Informix Embedded SQLJ This section discusses the intended audience and the associated software products that you must have to use IBM Informix Embedded SQLJ New editions and product names Dynamic Server editions were withdrawn and new Informix editions are available Some products were also renamed The publications in the Informix library pertain to the following products e IBM Informix database server formerly known as IBM Informix Dynamic Server IDS e IBM OpenAdmin Tool for Informix formerly known as OpenAdmin Tool for Informix Dynamic Server IDS e IBM Informix SQL Warehousing Tool formerly known as Informix Warehouse Feature For more information about the Informix product family go to http www ibm com software data informix Types of users This guide is for programmers who want to write Java programs that can e Connect to Informix databases e Issue SQL statements to manipulate data in the database This manual is written with the assumption that you have the following background e A working knowledge of your computer your operating system and the utilities that your operating system provides e Experience with the Java programming language e Experience working with relational databases or exposure to database concepts e Experience with the SQL query language Software compatability For information about software compatab
60. these sample programs Copyright IBM Corp 1996 2013 2 1 2 2 IBM Informix Embedded SQL User s Guide Chapter 3 Fundamentals of embedded SQLJ programs Each SQLJ statement in an Embedded SQLJ program is identified by sql at the beginning of the statement The SQLJ translator recognizes sql and translates the rest of the statement into Java code using JDBC calls You can use a class called ConnectionManager located in a file in the demo sqlj directory to initiate a JDBC connection The ConnectionManager class uses a JDBC driver and a database URL to connect to a database Database URLs are described in Database URLs on page A 1 To enable your embedded SQLJ program to connect to a database you assign values to the following data members of the ConnectionManager class in the file demo sqlj ConnectionManager java Member Description UID The user name PWD The password for the user name DRIVER The JDBC driver DBURL The URL for the database You must include the directory that contains your ConnectionManager class file produced when you compile ConnectionManager java in your CLASSPATH environment variable definition Your Embedded SQLJ program connects to the database by calling the initContext method of the ConnectionManager class as follows ConnectionManager initContext The ConnectionManager class on page A 1 provides details about the functionality of the initContext method As an
61. tiple connection contexts the setting for url for the default context also applies to any connection context that does not have a specific setting You can specify a URL for a particular connection context as in url ctxclass2 Any connection context with a URL must also have a user name set for it using the user option for online checking to occur Enables online checking and specifies the user name with which the translator connects to the database see Online checking on page 5 8 For example to enable online checking on the default connection context and connect with the user name fred use the following option user fred Chapter 5 Embedded SQLJ source code processing 5 5 If you are using multiple connection contexts the setting for user for the default connection context also applies to any connection context that does not have a specific setting If you want to enable online checking for the default context but turn off online checking for another connection for example ctxcon2 you need to specify the user option twice user fred user ctxcon2 To enable online checking for a particular connection context specify that context with the user name as in user ctxcon3 joyce The classes of the connection contexts you specify must all be declared in your source code or previously compiled into a class file vm Specifies a particular Java interpreter for the java ifxsqlj command to use You mus
62. tput directory for generated java files If you do not specify this option files are generated under the directory of the input sqlj file encoding Specifies the GLS encoding for sqlj and java input files and for jjava generated files If unspecified the setting of the file encoding property for the Java interpreter is used The encoding option is also passed to the Java compiler help Displays option names descriptions and current settings The list displays IBM Informix Embedded SQL User s Guide e The name of the option e The type of the option for example if it is Boolean or a selection of allowed values e The current value e A description of the option e Whether the property is at its default or was set by either a property file or the command line No translation or compilation is performed when you specify the help option linemap props Enables the mapping of line numbers between the generated java file and the original sqlj file The linemap option is useful for debugging because it allows you to trace compilation and execution errors back to your Embedded SQL source code For the linemap option to be effective the name of the sqlj source code file must match the name of the class it implements Specifies the name of the property file from which to read options The ifxprofp tool on page 5 9 explains how to use property files status Displays status messages while the java i
63. u use an iterator object as described in the next section Result sets on page 4 3 The SELECT INTO statement includes a list of host variables in the INTO clause to which the selected data is assigned For example sql SELECT INTO customer_num fname lname company saddressl address2 city state zipcode phone FROM customer WHERE customer_num 101 E The number of selected expressions must match the number of host variables The SQL types must be compatible with the host variable types If you use online checking the SQLJ translator checks that the order number and types of the SQL expressions and host variables match For information on how to perform online checking see Online checking on page 5 8 IBM Informix Embedded SQL User s Guide Result sets Embedded SQLJ uses iterator objects to manage result sets returned by SELECT statements A result set iterator is a Java object from which you can retrieve the data returned from the database Iterator objects can be passed as parameters to methods and manipulated like other Java objects Important Names of iterator classes must be unique within an application When you declare an iterator object you specify a set of Java variables to match the SQL columns that your SELECT statement returns There are two types of iterators positional and named Positional iterators The order of declaration of the Java variables in a positional
64. uch as and You can specify another locale if you plan to use characters from other locales in your data or your SQL identifiers or if you want to conform to other collation rules for character data For instructions about how to specify locales additional syntax and other considerations related to GLS locales see the IBM Informix GLS User s Guide Demonstration databases The DB Access utility which is provided with your IBM Informix database server products includes one or more of the following demonstration databases e The stores_demo database illustrates a relational schema with information about a fictitious wholesale sporting goods distributor Many examples in IBM Informix publications are based on the stores_demo database e The superstores_demo database illustrates an object relational schema The superstores_demo database contains examples of extended data types type and table inheritance and user defined routines For information about how to create and populate the demonstration databases see the IBM Informix DB Access User s Guide For descriptions of the databases and their contents see the IBM Informix Guide to SQL Reference The scripts that you use to install the demonstration databases are in the INFORMIXDIR bin directory on UNIX platforms and in the INFORMIXDIR bin directory in Windows environments Example code conventions vi Examples of SQL code occur throughout this publication Exc
65. um System out printIn FIRST NAME cust_rec fname System out printIn LAST NAME cust_rec Iname System out print n COMPANY cust_rec company System out printIn ADDRESS cust_rec address1 n i cust_rec address2 System out println CITY cust_rec city System out printIn STATE cust_rec state System out println ZIPCODE cust_rec zipcode System out println PHONE cust_rec phone System out println System out printIn n n row_cnt System out printIn Total No Of rows Selected row_cnt cust_rec close The next method of the iterator object advances processing to successive rows of the result set It returns FALSE after it fails to find a row to retrieve The Java compiler detects type mismatches for the accessor methods 4 4 IBM Informix Embedded SQLJ User s Guide The validity of the types and names of the iterator columns and their related columns in the SELECT statement are checked at translation time if you_perform FOniing online checking For information about setting up online checking see checking on page 5 8 Column aliases When an expression returned by a SELECT statement has an SQL name that is not a valid Java identifier use SQL column aliases to rename them For example the name Not valid for Java is acceptable as a column name in SQL but not as a Java identifier You can
66. use a column alias that has a name acceptable as a Java identifier by using the AS clause SELECT Not valid for Java AS Coll FROM tablename When you create a named iterator class for this query you specify the column alias name for the Java variable as in sql iterator Iterator_name String Coll lterator methods Both named and positional iterator objects have the following methods e rowCount Returns the number of rows retrieved by the iterator object e close Closes the iterator raises SQLException if the iterator is already closed e isClosed Returns TRUE after the iterator s close method has been called otherwise it returns FALSE Positional iterators also have the endFetch method The endFetch method returns TRUE when no more rows are available Named iterators also have the next method The next method advances processing to successive rows of the result set It returns FALSE after it fails to find a row to retrieve For an example of how to use the next method see Positioned updates and deletes To perform positioned updates and deletes in a result set you use the WHERE CURRENT OF clause with a host variable that contains an iterator object For example sql delete _statement update_statement WHERE CURRENT OF iter At runtime the variable iter must contain an open iterator object that contains a result set selected from the same table accessed by the query in either delete_statement
67. va program is called File1 class An internal resource file named profilekeys class is also created If your program includes an iterator a file called iterator_name class is produced Tip To perform translation only execute the java ifxsqlj command with the compile option set to FALSE For information about the compile option see Advanced options for the ifxsqlj command on page 5 4 To create a complete application you must include the directories that contain the SQL runtime classes in sqlj runtime in your CLASSPATH environment variable definition The SQL runtime files are available in ifxsqlj jar the file that you installed when you first installed the Embedded SQLJ product as described in A simple embedded SQLJ program on page 3 3 In addition you must include the locations of ifxtools jar and the relevant version of the JDK in your CLASSPATH definition At runtime you must also include the location of ifxjdbc jar however you do not need to include this file location when translating or compiling your application You run your Embedded SQLJ program like any other Java program by using the Java interpreter as follows java Filel Copyright IBM Corp 1996 2013 5 1 The ifxsqlj command 5 2 You use the java ifxsqlj command to translate and compile your Embedded SQL source code You run the java ifxsqlj command at the DOS or UNIX prompt The syntax of the java ifxsqlj command is as follow
68. vary This information is for planning purposes only The information herein is subject to change before the products described become available This information contains examples of data and reports used in daily business operations To illustrate them as completely as possible the examples include the names of individuals companies brands and products All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental COPYRIGHT LICENSE This information contains sample application programs in source language which illustrate programming techniques on various operating platforms You may copy IBM Informix Embedded SQLJ User s Guide modify and distribute these sample programs in any form without payment to IBM for the purposes of developing using marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written These examples have not been thoroughly tested under all conditions IBM therefore cannot guarantee or imply reliability serviceability or function of these programs The sample programs are provided AS IS without warranty of any kind IBM shall not be liable for any damages arising out of your use of the sample programs Each copy or any portion of these sample programs or any derivative work must include a copyright notice as follows
69. y 0 sql CREATE DATABASE demo_sqlj WITH LOG MODE ANSI line number 59 PREPARED_STATEMENT executed via EXECUTE_UPDATE role is STATEMENT descriptor is null contains no parameters result set type is NO RESULT result set name is null contains no result columns Chapter 5 Embedded SQL source code processing 5 9 5 10 IBM Informix Embedded SQLJ User s Guide Appendix A Embedded SQLJ and database connections describes how Embedded SQLJ programs connect to databases This appendix provides background information and information about using nondefault connection contexts The ConnectionManager class You use the ConnectionManager class to make a connection to a database as described in Embedded SQL versus JDBC on page 1 2 The ConnectionManager class has two methods e newConnection e initContext The newConnection method creates and returns a new JDBC Connection object using the current values of the DRIVER DBURL UID and PWD attributes If any of the needed attributes is null or a connection cannot be established an error message is printed to System out and the program exits The initContext method returns the currently installed default context If the current default context is null a new default context instance is created and installed using a connection obtained from a call to getConnection Database URLs The DBURL data member of the ConnectionManager class and the value for the url opt
70. yment of a fee The licensed program described in this document and all licensed material available for it are provided by IBM under terms of the IBM Customer Agreement IBM International Program License Agreement or any equivalent agreement between us Any performance data contained herein was determined in a controlled environment Therefore the results obtained in other operating environments may vary significantly Some measurements may have been made on development level systems and there is no guarantee that these measurements will be the same on generally available systems Furthermore some measurements may have been estimated through extrapolation Actual results may vary Users of this document should verify the applicable data for their specific environment Information concerning non IBM products was obtained from the suppliers of those products their published announcements or other publicly available sources IBM has not tested those products and cannot confirm the accuracy of performance compatibility or any other claims related to non IBM products Questions on the capabilities of non IBM products should be addressed to the suppliers of those products All statements regarding IBM s future direction or intent are subject to change or withdrawal without notice and represent goals and objectives only All IBM prices shown are IBM s suggested retail prices are current and are subject to change without notice Dealer prices may

Download Pdf Manuals

image

Related Search

Related Contents

Philips Mini Hi-Fi System FWP3200D  Einhell BT-HP 160  取扱説明書ダウンロード  Manual Equipos Pres. ROWAPRESS  MC DRIVE IB Series Ltype  Panasonic PT-LB20NTU User's Manual  HERMA Correction/covering labels A4 64.6x33.8 mm white paper matt opaque 600 pcs.    YAZ User's Guide and Reference  dossier de presse 2014 - Festival Lyrique de Montperreux  

Copyright © All rights reserved.
Failed to retrieve file