Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
StatementUtils |
|
| 2.3333333333333335;2.333 |
1 | /* | |
2 | * Copyright 2001,2004 The Apache Software Foundation. | |
3 | * | |
4 | * Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | * you may not use this file except in compliance with the License. | |
6 | * You may obtain a copy of the License at | |
7 | * | |
8 | * http://www.apache.org/licenses/LICENSE-2.0 | |
9 | * | |
10 | * Unless required by applicable law or agreed to in writing, software | |
11 | * distributed under the License is distributed on an "AS IS" BASIS, | |
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | * See the License for the specific language governing permissions and | |
14 | * limitations under the License. | |
15 | */ | |
16 | ||
17 | package org.apache.commons.scaffold.sql; | |
18 | ||
19 | ||
20 | import java.sql.Connection; | |
21 | import java.sql.SQLException; | |
22 | import java.sql.PreparedStatement; | |
23 | import java.sql.Statement; | |
24 | import java.sql.ResultSet; | |
25 | ||
26 | import java.util.Collection; | |
27 | ||
28 | ||
29 | /** | |
30 | * General purpose SQL Statements. | |
31 | * | |
32 | * @author Ted Husted | |
33 | * @version $Revision: 155464 $ $Date: 2005-02-26 13:26:54 +0000 (Sat, 26 Feb 2005) $ | |
34 | */ | |
35 | 0 | public final class StatementUtils { |
36 | ||
37 | /** | |
38 | * The delimiter used by a SQL "LIKE" expression. | |
39 | */ | |
40 | private static final String LIKE_DELIM = "%"; | |
41 | ||
42 | ||
43 | /** | |
44 | * Prepare the parameter for use in a SQL "LIKE" expression. | |
45 | */ | |
46 | public static final String like(String parameter) { | |
47 | ||
48 | 0 | return LIKE_DELIM + parameter + LIKE_DELIM; |
49 | ||
50 | } | |
51 | ||
52 | ||
53 | /** | |
54 | * Create a new database table in an existing database, | |
55 | * by sending "CREATE TABLE " and the parameters to | |
56 | * the DBMS configured with the ConnectionPool. | |
57 | * <p> | |
58 | * For safety, does <b>not</b> drop table first. | |
59 | * <p> | |
60 | * Returns false if a SQL exception is thrown; exception | |
61 | * is written to the servlet log. | |
62 | * | |
63 | * @param resource The database resource key or null for default | |
64 | * @param tableName The name of the table to create | |
65 | * @param tableCreate The SQL command defining the | |
66 | * fields and indices | |
67 | * @return Result of statement.execute() | |
68 | * @exception SQL Exception if SQL error occurs | |
69 | */ | |
70 | public static final int createTable( | |
71 | String resource, | |
72 | String tableName, | |
73 | String tableCreate) | |
74 | throws SQLException { | |
75 | ||
76 | 0 | return executeUpdate(resource,"CREATE TABLE " + |
77 | tableName + " " + tableCreate); | |
78 | ||
79 | } // end createTable | |
80 | ||
81 | ||
82 | ||
83 | /** | |
84 | * Returns next sequential key for given table. | |
85 | * <p> | |
86 | * This ensures compatibility for DBMS products that do not | |
87 | * support auto-incrementing a key field. | |
88 | * <p> | |
89 | * Intended to generate primary keys, but could be used to | |
90 | * create other serial numbers based on an unsigned int. | |
91 | * <p> | |
92 | * Allocating the key involves reading the current key, and | |
93 | * then incrementing the key for the next user. The method | |
94 | * is synchronized so that two threads do not read the | |
95 | * same key before it is incremented. | |
96 | * <p> | |
97 | * This routine is "unrolled" for efficiency, but the same | |
98 | * effect can be accomplished using <code>getColumn()</code> | |
99 | * to fetch the next key, | |
100 | * and <code>executeUpdate</code> to increment the key. | |
101 | * | |
102 | * @param resource The database resource key or null for default | |
103 | * @param column The column to return from the result set. | |
104 | * @param query The SQL statement to fetch the next key. | |
105 | * @param key The table name or other replaceable parameter. | |
106 | * @param query The SQL statement to increment the next key. | |
107 | * @exception SQLException if SQL error occurs | |
108 | */ | |
109 | public static final synchronized Object createKey( | |
110 | String resource, | |
111 | int column, | |
112 | String query, | |
113 | Object key, | |
114 | String update) | |
115 | throws SQLException { | |
116 | ||
117 | 0 | Connection connection = null; |
118 | 0 | ResultSet resultSet = null; |
119 | 0 | PreparedStatement preparedStatement = null; |
120 | 0 | Object result = null; |
121 | 0 | int resultCode = 0; |
122 | ||
123 | try { | |
124 | 0 | connection = |
125 | ConnectionAdaptor.getPool().getConnection(resource); | |
126 | ||
127 | // fetch the next key | |
128 | // - Object next = getColumn(resource,1,query,key); | |
129 | 0 | preparedStatement = connection.prepareStatement(query); |
130 | 0 | preparedStatement.setObject(1,key); |
131 | 0 | resultSet = preparedStatement.executeQuery(); |
132 | 0 | if (resultSet.next()) { |
133 | 0 | result = resultSet.getObject(column); |
134 | } | |
135 | ||
136 | // increment key (SQL command handles increment) | |
137 | // - int result = executeUpdate(resource,update,key); | |
138 | 0 | if (preparedStatement!=null) preparedStatement.close(); |
139 | 0 | preparedStatement = connection.prepareStatement(update); |
140 | 0 | preparedStatement.setObject(1,key); |
141 | 0 | resultCode = preparedStatement.executeUpdate(); |
142 | } | |
143 | ||
144 | finally { | |
145 | 0 | try { |
146 | 0 | if (preparedStatement!=null) preparedStatement.close(); |
147 | 0 | if (resultSet!=null) resultSet.close(); |
148 | 0 | if (connection!=null) connection.close(); |
149 | } | |
150 | 0 | catch (SQLException sqle) { |
151 | // do nothing | |
152 | 0 | } |
153 | 0 | } |
154 | ||
155 | 0 | return result; |
156 | ||
157 | } // end createKey | |
158 | ||
159 | ||
160 | // ------------------------------------------------------ executeUpdate | |
161 | ||
162 | ||
163 | /** | |
164 | * Used to select correct executeUpdate signature. | |
165 | */ | |
166 | 0 | private static final Object[] nullParams = null; |
167 | ||
168 | ||
169 | /** | |
170 | * Prepares statement using SQL statement and executes | |
171 | * with DBMS configured with the ConnectionPool. | |
172 | * <p> | |
173 | * Command may be an INSERT, UPDATE, or DELETE statement | |
174 | * or anything that returns nothing, such as a DDL | |
175 | * statement. | |
176 | * | |
177 | * @param connection The database connection or null to acquire | |
178 | * @param resource The database resource key or null for default | |
179 | * @param command The SQL statement to execute. | |
180 | * @param parameters An array of parameter objects | |
181 | * @exception SQLException if SQL error occurs | |
182 | */ | |
183 | public static final int executeUpdate( | |
184 | Connection connection, | |
185 | String resource, | |
186 | String command, | |
187 | Object[] parameters) | |
188 | throws SQLException { | |
189 | ||
190 | 0 | boolean acqConnection = (connection==null); |
191 | 0 | Statement statement = null; |
192 | 0 | PreparedStatement preparedStatement = null; |
193 | 0 | int result = 0; |
194 | ||
195 | try { | |
196 | ||
197 | 0 | if (acqConnection) { |
198 | 0 | connection = |
199 | ConnectionAdaptor.getPool().getConnection(resource); | |
200 | } | |
201 | ||
202 | 0 | if ((parameters==null) || (parameters.length==0)) { |
203 | 0 | statement = connection.createStatement(); |
204 | 0 | result = statement.executeUpdate(command); |
205 | } | |
206 | else { | |
207 | 0 | preparedStatement = connection.prepareStatement(command); |
208 | 0 | for (int i=0; i<parameters.length; i++) { |
209 | 0 | preparedStatement.setObject(i+1, parameters[i]); |
210 | } | |
211 | 0 | result = preparedStatement.executeUpdate(); |
212 | } | |
213 | ||
214 | } // end try | |
215 | ||
216 | finally { | |
217 | 0 | try { |
218 | 0 | if (preparedStatement != null) preparedStatement.close(); |
219 | 0 | if (statement != null) statement.close(); |
220 | 0 | if ((acqConnection) && (connection!= null)) connection.close(); |
221 | } | |
222 | 0 | catch (SQLException sqle) { |
223 | // do nothing | |
224 | 0 | } |
225 | 0 | } |
226 | ||
227 | 0 | return result; |
228 | ||
229 | } // end executeUpdate | |
230 | ||
231 | ||
232 | /** | |
233 | * Convenience method for calling | |
234 | * <code>executeUpdate(String,String,Object[]);</code> | |
235 | * with a single Object parameter. | |
236 | * | |
237 | * @param resource The database resource key or null for default | |
238 | * @param command The SQL statement to execute. | |
239 | * @param parameter A single parameter to use with command | |
240 | * @exception SQLException if SQL error occurs | |
241 | */ | |
242 | public static final int executeUpdate( | |
243 | String resource, | |
244 | String command, | |
245 | Object parameter) | |
246 | throws SQLException { | |
247 | ||
248 | 0 | Object[] parameters = new Object[1]; |
249 | 0 | parameters[0] = parameter; |
250 | ||
251 | 0 | return executeUpdate(null,resource,command,parameters); |
252 | ||
253 | } // end executeUpdate | |
254 | ||
255 | ||
256 | /** | |
257 | * Convenience method for calling | |
258 | * <code>executeUpdate(String,String,Object[]);</code> | |
259 | * without a parameter list. | |
260 | * | |
261 | * @param resource The database resource key or null for default | |
262 | * @param command The SQL statement to execute. | |
263 | * @exception SQLException if SQL error occurs | |
264 | */ | |
265 | public static final int executeUpdate( | |
266 | String resource, | |
267 | String command) | |
268 | throws SQLException { | |
269 | ||
270 | 0 | return executeUpdate(null,resource,command,nullParams); |
271 | ||
272 | } // end executeUpdate | |
273 | ||
274 | ||
275 | /** | |
276 | * Prepares statement using SQL statement and executes | |
277 | * with DBMS configured with the ConnectionPool. | |
278 | * <p> | |
279 | * Command may be an INSERT, UPDATE, or DELETE statement | |
280 | * or anything that returns nothing, such as a DDL | |
281 | * statement. | |
282 | * | |
283 | * @param resource The database resource key or null for default | |
284 | * @param command The SQL statement to execute. | |
285 | * @param parameters An array of parameter objects | |
286 | * @exception SQLException if SQL error occurs | |
287 | */ | |
288 | public static final int executeUpdate( | |
289 | String resource, | |
290 | String command, | |
291 | Object[] parameters) | |
292 | throws SQLException { | |
293 | ||
294 | 0 | return executeUpdate(null,resource,command,parameters); |
295 | ||
296 | } // end executeUpdate | |
297 | ||
298 | ||
299 | /** | |
300 | * Convenience method for calling | |
301 | * <code>executeUpdate(String,String,Object[]);</code> | |
302 | * without a parameter list. | |
303 | * | |
304 | * @param resource The database resource key or null for default | |
305 | * @param command The SQL statement to execute. | |
306 | * @exception SQLException if SQL error occurs | |
307 | */ | |
308 | public static final int executeUpdate( | |
309 | String command) | |
310 | throws SQLException { | |
311 | ||
312 | 0 | return executeUpdate(null,null,command,nullParams); |
313 | ||
314 | } // end executeUpdate | |
315 | ||
316 | ||
317 | ||
318 | // ------------------------------------------------------- executeQuery | |
319 | ||
320 | /** | |
321 | * Merges a SQL command with an array of parameters. | |
322 | * Any number or no parameters may be passed. | |
323 | * The parameters parameter may also be null. | |
324 | * <p> | |
325 | * The Statement or PreparedStatement used internally | |
326 | * are closed, but the Connection is left open so that the | |
327 | * ResultSet remains valid. | |
328 | * The caller should close the Connection and ResultSet | |
329 | * as soon as possible, especially if they are pooled. | |
330 | * | |
331 | * @param resource The database resource key or null for default | |
332 | * @param target The JavaBean object to return in the collection. | |
333 | * @param command The SQL statement to prepare and execute. | |
334 | * @param parameters The replaceable parameters to use with command. | |
335 | * @exception SQLException if SQL error occurs | |
336 | */ | |
337 | public static final ResultSet executeQuery( | |
338 | Connection connection, | |
339 | String command, | |
340 | Object[] parameters) | |
341 | throws SQLException { | |
342 | ||
343 | 0 | Statement statement = null; |
344 | 0 | PreparedStatement preparedStatement = null; |
345 | 0 | ResultSet resultSet = null; |
346 | ||
347 | try { | |
348 | ||
349 | 0 | if ((parameters==null) || (parameters.length==0)) { |
350 | 0 | statement = connection.createStatement(); |
351 | 0 | resultSet = statement.executeQuery(command); |
352 | } | |
353 | else { | |
354 | 0 | preparedStatement = connection.prepareStatement(command); |
355 | 0 | for (int i=0; i<parameters.length; i++) { |
356 | 0 | preparedStatement.setObject(i+1, parameters[i]); |
357 | } | |
358 | 0 | resultSet = preparedStatement.executeQuery(); |
359 | } | |
360 | ||
361 | } | |
362 | ||
363 | finally { | |
364 | 0 | try { |
365 | 0 | if (statement != null) statement.close(); |
366 | 0 | if (preparedStatement != null) preparedStatement.close(); |
367 | } | |
368 | 0 | catch (SQLException sqle) {} |
369 | 0 | } |
370 | ||
371 | 0 | return resultSet; |
372 | ||
373 | } // end executeQuery | |
374 | ||
375 | ||
376 | // ---------------------------------------------------------- getColumn | |
377 | ||
378 | /** | |
379 | * Merges a SQL command with an array of parameters | |
380 | * and returns a column from the first record of the result set as | |
381 | * an Object. | |
382 | * If an empty set results, null is returned. | |
383 | * Any number or no parameters may be passed. | |
384 | * The parameters parameter may also be null. | |
385 | * The SQL Statement/ResultSet are handled by | |
386 | * <code>ExecuteQuery()</code>. | |
387 | * The ResultSet is converted to a collection using | |
388 | * <code>ResultSetUtils.getCollection(Object,ResultSet)</code>. | |
389 | * The ResultSet is released, and the Collection returned. | |
390 | * | |
391 | * @param resource The database resource key or null for default | |
392 | * @param column The column to return from the result set | |
393 | * @param command The SQL statement to prepare and execute. | |
394 | * @param parameters The replaceable parameters to use with command. | |
395 | * @exception SQLException if SQL error occurs | |
396 | */ | |
397 | public static final Object getColumn( | |
398 | String resource, | |
399 | int column, | |
400 | String command, | |
401 | Object[] parameters) | |
402 | throws SQLException { | |
403 | ||
404 | 0 | Object result = null; |
405 | 0 | Connection connection = null; |
406 | 0 | ResultSet resultSet = null; |
407 | ||
408 | try { | |
409 | ||
410 | 0 | connection = |
411 | ConnectionAdaptor.getPool().getConnection(resource); | |
412 | 0 | resultSet = executeQuery(connection,command,parameters); |
413 | 0 | if (resultSet.next()) { |
414 | 0 | result = resultSet.getObject(column); |
415 | } | |
416 | ||
417 | } | |
418 | ||
419 | finally { | |
420 | 0 | try { |
421 | ||
422 | 0 | if (resultSet!=null) resultSet.close(); |
423 | 0 | if (connection!=null) connection.close(); |
424 | } | |
425 | 0 | catch (SQLException sqle) { |
426 | // do nothing | |
427 | 0 | } |
428 | 0 | } |
429 | ||
430 | 0 | return result; |
431 | ||
432 | } // end getColumn | |
433 | ||
434 | ||
435 | /** | |
436 | * Convenience method for calling | |
437 | * <code>getColumn(String,int,String,Object[]);</code> | |
438 | * with a single object parameter. | |
439 | * | |
440 | * @param resource The database resource key or null for default | |
441 | * @param column The column to return from the result set. | |
442 | * @param command The SQL statement to prepare and execute. | |
443 | * @param key The replaceable parameter | |
444 | * @exception SQLException if SQL error occurs | |
445 | */ | |
446 | public static final Object getColumn( | |
447 | String resource, | |
448 | int column, | |
449 | String command, | |
450 | Object key) | |
451 | throws SQLException { | |
452 | ||
453 | 0 | Object[] parameters = new Object[1]; |
454 | 0 | parameters[0] = key; |
455 | 0 | return getColumn(resource,column,command,parameters); |
456 | ||
457 | } // end getColumn | |
458 | ||
459 | ||
460 | /** | |
461 | * Convenience method for calling | |
462 | * <code>getColumn(String,Object,String,Object[]);</code> | |
463 | * | |
464 | * with a single int parameter. | |
465 | * @param resource The database resource key or null for default | |
466 | * @param column The column to return from the result set. | |
467 | * @param command The SQL statement to prepare and execute. | |
468 | * @param key The replaceable parameter to use, if any. | |
469 | * @exception SQLException if SQL error occurs | |
470 | */ | |
471 | public static final Object getColumn( | |
472 | String resource, | |
473 | int column, | |
474 | String command, | |
475 | int key) | |
476 | throws SQLException { | |
477 | ||
478 | 0 | Object[] parameters = new Object[1]; |
479 | 0 | parameters[0] = new Integer(key); |
480 | ||
481 | 0 | return getColumn(resource,column,command,parameters); |
482 | ||
483 | } // end getColumn | |
484 | ||
485 | ||
486 | /** | |
487 | * Convenience method for calling | |
488 | * <code>getColumn(String,Object,String,Object[]);</code> | |
489 | * without a parameter list. | |
490 | * | |
491 | * @param resource The database resource key or null for default | |
492 | * @param column The column to return from the result set. | |
493 | * @param command The SQL statement to prepare and execute. | |
494 | * @param key The replaceable parameter. | |
495 | * @exception SQLException if SQL error occurs | |
496 | */ | |
497 | public static final Object getColumn( | |
498 | String resource, | |
499 | int column, | |
500 | String command) | |
501 | throws SQLException { | |
502 | ||
503 | 0 | return getColumn(resource,column,command,null); |
504 | ||
505 | } // end getColumn | |
506 | ||
507 | ||
508 | // ------------------------------------------------------ getElement | |
509 | ||
510 | /** | |
511 | * Merges a SQL command with an array of parameters. | |
512 | * Any number or no parameters may be passed. | |
513 | * The parameters parameter may also be null. | |
514 | * The SQL Statement/ResultSet are handled by | |
515 | * <code>ExecuteQuery()</code>. | |
516 | * The first record of the ResultSet is used to populate | |
517 | * <code>ResultSetUtils.getElement(Object,ResultSet)</code>. | |
518 | * The ResultSet is released, and the bean returned. | |
519 | * | |
520 | * @param resource The database resource key or null for default | |
521 | * @param target The JavaBean object to populate. | |
522 | * @param command The SQL statement to prepare and execute. | |
523 | * @param parameters The replaceable parameters to use with | |
524 | * command. | |
525 | * @exception SQLException if SQL error occurs | |
526 | * @return True if element is found | |
527 | */ | |
528 | public static final boolean getElement( | |
529 | String resource, | |
530 | Object target, | |
531 | String command, | |
532 | Object[] parameters) | |
533 | throws SQLException { | |
534 | ||
535 | 0 | Object collection = null; |
536 | 0 | Connection connection = null; |
537 | 0 | ResultSet resultSet = null; |
538 | 0 | boolean found = false; |
539 | ||
540 | try { | |
541 | ||
542 | 0 | connection = |
543 | ConnectionAdaptor.getPool().getConnection(resource); | |
544 | 0 | resultSet = executeQuery(connection,command,parameters); |
545 | 0 | found = ResultSetUtils.getElement(target,resultSet); |
546 | } | |
547 | ||
548 | finally { | |
549 | 0 | try { |
550 | 0 | if (resultSet!=null) resultSet.close(); |
551 | 0 | if (connection!=null) connection.close(); |
552 | } | |
553 | 0 | catch (SQLException sqle) { |
554 | // do nothing | |
555 | 0 | } |
556 | 0 | } |
557 | ||
558 | 0 | return found; |
559 | ||
560 | } // end getElement | |
561 | ||
562 | ||
563 | /** | |
564 | * Convenience method for calling | |
565 | * <code>getElement(String,Object,String,Object[]);</code> | |
566 | * with a single object parameter. | |
567 | * | |
568 | * @param resource The database resource key or null for default | |
569 | * @param target The JavaBean object to populate. | |
570 | * @param command The SQL statement to prepare and execute. | |
571 | * @param key The replaceable parameter to use with LIKE. | |
572 | * @exception SQLException if SQL error occurs | |
573 | * @return True if element is found | |
574 | */ | |
575 | public static final boolean getElement( | |
576 | String resource, | |
577 | Object target, | |
578 | String command, | |
579 | Object key) | |
580 | throws SQLException { | |
581 | ||
582 | 0 | Object[] parameters = new Object[1]; |
583 | 0 | parameters[0] = key; |
584 | 0 | return getElement(resource,target,command,parameters); |
585 | ||
586 | } // end getElement | |
587 | ||
588 | ||
589 | /** | |
590 | * Convenience method for calling | |
591 | * <code>getElement(String,Object,String,Object[]);</code> | |
592 | * with a single int parameter. | |
593 | * | |
594 | * @param resource The database resource key or null for default | |
595 | * @param target The JavaBean object to populate. | |
596 | * @param command The SQL statement to prepare and execute. | |
597 | * @param key The replaceable parameter to use with LIKE. | |
598 | * @exception SQLException if SQL error occurs | |
599 | * @return True if element is found | |
600 | */ | |
601 | public static final boolean getElement( | |
602 | String resource, | |
603 | Object target, | |
604 | String command, | |
605 | int key) | |
606 | throws SQLException { | |
607 | ||
608 | 0 | Object[] parameters = new Object[1]; |
609 | 0 | parameters[0] = new Integer(key); |
610 | 0 | return getElement(resource,target,command,parameters); |
611 | ||
612 | } // end getElement | |
613 | ||
614 | ||
615 | /** | |
616 | * Convenience method for calling | |
617 | * <code>getElement(String,Object,String,Object[]);</code> | |
618 | * without a parameter list. | |
619 | * | |
620 | * @param resource The database resource key or null for default | |
621 | * @param target The JavaBean object to populate. | |
622 | * @param command The SQL statement to prepare and execute. | |
623 | * @param key The replaceable parameter to use with LIKE. | |
624 | * @exception SQLException if SQL error occurs | |
625 | * @return True if element is found | |
626 | */ | |
627 | public static final boolean getElement( | |
628 | String resource, | |
629 | Object target, | |
630 | String command) | |
631 | throws SQLException { | |
632 | ||
633 | 0 | return getElement(resource,target,command,null); |
634 | ||
635 | } // end getElement | |
636 | ||
637 | ||
638 | // ------------------------------------------------------ getCollection | |
639 | ||
640 | /** | |
641 | * Merges a SQL command with an array of parameters. | |
642 | * Any number or no parameters may be passed. | |
643 | * The parameters parameter may also be null. | |
644 | * The SQL Statement/ResultSet are handled by | |
645 | * <code>ExecuteQuery()</code>. | |
646 | * The ResultSet is converted to a collection using | |
647 | * <code>ResultSetUtils.getCollection(Object,ResultSet)</code>. | |
648 | * The ResultSet is released, and the Collection returned. | |
649 | * | |
650 | * @param resource The database resource key or null for default | |
651 | * @param target The JavaBean object to return in the collection. | |
652 | * @param command The SQL statement to prepare and execute. | |
653 | * @param parameters The replaceable parameters to use with command. | |
654 | * @exception SQLException if SQL error occurs | |
655 | */ | |
656 | public static final Collection getCollection( | |
657 | String resource, | |
658 | Object target, | |
659 | String command, | |
660 | Object[] parameters) | |
661 | throws SQLException { | |
662 | ||
663 | 0 | Object collection = null; |
664 | 0 | Connection connection = null; |
665 | 0 | ResultSet resultSet = null; |
666 | ||
667 | try { | |
668 | ||
669 | 0 | connection = |
670 | ConnectionAdaptor.getPool().getConnection(resource); | |
671 | 0 | resultSet = executeQuery(connection,command,parameters); |
672 | 0 | collection = ResultSetUtils.getCollection(target,resultSet); |
673 | } | |
674 | ||
675 | finally { | |
676 | 0 | try { |
677 | 0 | if (resultSet!=null) resultSet.close(); |
678 | 0 | if (connection!=null) connection.close(); |
679 | } | |
680 | 0 | catch (SQLException sqle) { |
681 | // do nothing | |
682 | 0 | } |
683 | 0 | } |
684 | ||
685 | 0 | return (Collection) collection; |
686 | ||
687 | } // end getCollection | |
688 | ||
689 | ||
690 | /** | |
691 | * Convenience method for calling | |
692 | * <code>getCollection(String,Object,String,Object[]);</code> | |
693 | * with a single object parameter. | |
694 | * | |
695 | * @param resource The database resource key or null for default | |
696 | * @param target The JavaBean object to return in the collection. | |
697 | * @param command The SQL statement to prepare and execute. | |
698 | * @param key The replaceable parameter to use with LIKE. | |
699 | * @exception SQLException if SQL error occurs | |
700 | */ | |
701 | public static final Collection getCollection( | |
702 | String resource, | |
703 | Object target, | |
704 | String command, | |
705 | Object key) | |
706 | throws SQLException { | |
707 | ||
708 | 0 | Object[] parameters = new Object[1]; |
709 | 0 | parameters[0] = key; |
710 | 0 | return getCollection(resource,target,command,parameters); |
711 | ||
712 | } // end getCollection | |
713 | ||
714 | ||
715 | /** | |
716 | * Convenience method for calling | |
717 | * <code>getCollection(String,Object,String,Object[]);</code> | |
718 | * with a single int parameter. | |
719 | * | |
720 | * @param resource The database resource key or null for default | |
721 | * @param target The JavaBean object to return in the collection. | |
722 | * @param command The SQL statement to prepare and execute. | |
723 | * @param key The replaceable parameter to use with LIKE. | |
724 | * @exception SQLException if SQL error occurs | |
725 | */ | |
726 | public static final Collection getCollection( | |
727 | String resource, | |
728 | Object target, | |
729 | String command, | |
730 | int key) | |
731 | throws SQLException { | |
732 | ||
733 | 0 | Object[] parameters = new Object[1]; |
734 | 0 | parameters[0] = new Integer(key); |
735 | 0 | return getCollection(resource,target,command,parameters); |
736 | ||
737 | } // end getCollection | |
738 | ||
739 | ||
740 | /** | |
741 | * Convenience method for calling | |
742 | * <code>getCollection(String,Object,String,Object[]);</code> | |
743 | * without a parameter list. | |
744 | * | |
745 | * @param resource The database resource key or null for default | |
746 | * @param target The JavaBean object to return in the collection. | |
747 | * @param command The SQL statement to prepare and execute. | |
748 | * @param key The replaceable parameter to use with LIKE. | |
749 | * @exception SQLException if SQL error occurs | |
750 | */ | |
751 | public static final Collection getCollection( | |
752 | String resource, | |
753 | Object target, | |
754 | String command) | |
755 | throws SQLException { | |
756 | ||
757 | 0 | return getCollection(resource,target,command,null); |
758 | ||
759 | } // end getCollection | |
760 | ||
761 | ||
762 | } // end StatementUtils | |
763 |