View Javadoc

1   package org.odmg;
2   
3   
4   
5   /**
6   
7    * The interface to an OQL query object.
8   
9    * @author	David Jordan (as Java Editor of the Object Data Management Group)
10  
11   * @version ODMG 3.0
12  
13   */
14  
15  
16  
17  public interface OQLQuery
18  
19  {
20  
21  
22  
23      /**
24  
25       * Create an OQL query from the string parameter.
26  
27       * In order to execute a query, an <code>OQLQuery</code> object must be created
28  
29       * by calling <code>Implementation.newOQLQuery</code>, then calling the
30  
31       * <code>create</code> method with the query string.
32  
33       * The <code>create</code> method might throw <code>QueryInvalidException</code>
34  
35       * if the query could not be compiled properly. Some implementations may not want
36  
37       * to compile the query before <code>execute</code> is called. In this case
38  
39       * <code>QueryInvalidException</code> is thrown when <code>execute</code> is called.
40  
41       * @param	query	An OQL query.
42  
43       * @exception	QueryInvalidException	The query syntax is invalid.
44  
45       */
46  
47      public void create(String query) throws QueryInvalidException;
48  
49  
50  
51      /**
52  
53       * Bind a parameter to the query.
54  
55       * A parameter is denoted in the query string passed to <code>create</code> by <i>$i</i>,
56  
57       * where <i>i</i> is the rank of the parameter, beginning with 1.
58  
59       * The parameters are set consecutively by calling this method <code>bind</code>.
60  
61       * The <i>ith</i> variable is set by the <i>ith</i> call to the <code>bind</code> method.
62  
63       * If any of the <i>$i</i> are not set by a call to <code>bind</code> at the point
64  
65       * <code>execute</code> is called, <code>QueryParameterCountInvalidException</code> is thrown.
66  
67       * The parameters must be objects, and the result is an <code>Object</code>.
68  
69       * Objects must be used instead of primitive types (<code>Integer</code> instead
70  
71       * of <code>int</code>) for passing the parameters.
72  
73       * <p>
74  
75       * If the parameter is of the wrong type,
76  
77       * <code>QueryParameterTypeInvalidException</code> is thrown.
78  
79       * After executing a query, the parameter list is reset.
80  
81       * @parameter	A value to be substituted for a query parameter.
82  
83       * @exception QueryParameterCountInvalidException The number of calls to
84  
85       * <code>bind</code> has exceeded the number of parameters in the query.
86  
87       * @exception QueryParameterTypeInvalidException The type of the parameter does
88  
89       * not correspond with the type of the parameter in the query.
90  
91       */
92  
93      public void bind(Object parameter) throws QueryParameterCountInvalidException,
94  
95              QueryParameterTypeInvalidException;
96  
97  
98  
99      /**
100 
101      * Execute the query.
102 
103      * After executing a query, the parameter list is reset.
104 
105      * Some implementations may throw additional exceptions that are also derived
106 
107      * from <code>ODMGException</code>.
108 
109      * @return	The object that represents the result of the query.
110 
111      * The returned data, whatever its OQL type, is encapsulated into an object.
112 
113      * For instance, when OQL returns an integer, the result is put into an
114 
115      * <code>Integer</code> object. When OQL returns a collection (literal or object),
116 
117      * the result is always a Java collection object of the same kind
118 
119      * (for instance, a <code>DList</code>).
120 
121      * @exception	QueryException	An exception has occurred while executing the query.
122 
123      */
124 
125     public Object execute() throws QueryException;
126 
127 }
128