OSDN Git Service

track
[luz/luz.git] / src / com / lavans / luz2 / sql / bind / BindPreparedStatementImpl.java
1 /* $Id: BindPreparedStatementImpl.java 413 2011-07-28 23:05:11Z dobashi $\r
2  * created: 2005/06/17\r
3  *\r
4  */\r
5 package com.lavans.luz2.sql.bind;\r
6 \r
7 import java.io.InputStream;\r
8 import java.io.Reader;\r
9 import java.math.BigDecimal;\r
10 import java.net.URL;\r
11 import java.sql.Array;\r
12 import java.sql.Blob;\r
13 import java.sql.Clob;\r
14 import java.sql.Date;\r
15 import java.sql.NClob;\r
16 import java.sql.ParameterMetaData;\r
17 import java.sql.PreparedStatement;\r
18 import java.sql.Ref;\r
19 import java.sql.ResultSet;\r
20 import java.sql.ResultSetMetaData;\r
21 import java.sql.RowId;\r
22 import java.sql.SQLException;\r
23 import java.sql.SQLXML;\r
24 import java.sql.Time;\r
25 import java.sql.Timestamp;\r
26 import java.text.SimpleDateFormat;\r
27 import java.util.ArrayList;\r
28 import java.util.Calendar;\r
29 import java.util.List;\r
30 import java.util.Map;\r
31 \r
32 import org.apache.commons.logging.Log;\r
33 import org.apache.commons.logging.LogFactory;\r
34 \r
35 import com.lavans.luz2.commons.StringUtils;\r
36 import com.lavans.luz2.sql.logging.Loggable;\r
37 import com.lavans.luz2.sql.logging.LoggingStatement;\r
38 import com.lavans.luz2.util.MethodUtil;\r
39 \r
40 /**\r
41  * @author dobashi\r
42  *\r
43  */\r
44 public class BindPreparedStatementImpl extends LoggingStatement implements BindPreparedStatement {\r
45         private static Log logger = LogFactory.getLog(BindPreparedStatementImpl.class);\r
46         /** 自クラス名。使うたびにgetName()すると遅くなるのでここで定義しておく。 */\r
47         private static final String CLASSNAME=BindPreparedStatementImpl.class.getName();\r
48         /** 処理移譲先。 */\r
49         private PreparedStatement st = null;\r
50 \r
51         /**\r
52          * パラメータ名と「何番目のパラメータか」を保持するMap。 一つのパラメータ名で複数のパラメータを表す場合があるので、\r
53          * valueはIntegerのListとする。 配列が可変長なので、int[]型では配列数制御の実装をしなければならない。\r
54          */\r
55         private Map<String, List<Integer>> paramMap = null;\r
56 \r
57         /** ログ出力用のsql */\r
58         private String sql;\r
59 \r
60         /**\r
61          * ログ用にバインドキー文字列(:member_id)を実際の値に変換する。\r
62          *\r
63          * @param sql\r
64          */\r
65         private void logParam(String key, String value){\r
66                 // 値に正規表現があったらエスケープ\r
67                 value = value.replace("$", "\\$");\r
68 \r
69                 // ログの書き換え\r
70                 sql = sql.replaceAll(key+" ",  value+" ");\r
71                 sql = sql.replaceAll(key+",",  value+",");\r
72                 sql = sql.replaceAll(key+"\t", value+"\t");\r
73                 sql = sql.replaceAll(key+"\n", value+"\n");\r
74                 sql = sql.replaceAll(key+"\r", value+"\r");\r
75                 sql = sql.replaceAll(key+"\\)",  value+"\\)");\r
76                 sql = sql.replaceAll(key+"$",  value+"");\r
77         }\r
78 \r
79         /**\r
80          * コンストラクタ。\r
81          *\r
82          * @param st\r
83          */\r
84         public BindPreparedStatementImpl(PreparedStatement st, String sql, Map<String, List<Integer>> paramMap) {\r
85                 super(st);\r
86                 this.st = st;\r
87                 this.sql = sql;\r
88                 this.paramMap = paramMap;\r
89 \r
90                 // 移譲先もLoggableな場合は移譲先にもlog用sqlを渡す。\r
91                 if (st instanceof Loggable) {\r
92                         ((Loggable) st).setLogsql(sql);\r
93                 }\r
94         }\r
95 \r
96         /**\r
97          * 複数パラメータ一括設定。\r
98          * LIMIT OFFSETに対するセットを実装するときにはsetIntにする必要あり(Postgres)。\r
99          * ソート順は顧客に入力させずにコンボで選ばせるようにすればよい。\r
100          * @throws SQLException\r
101          */\r
102         public void setParams(Map<String, Object> params) throws SQLException{\r
103                 if(params==null) return;\r
104 \r
105                 List<String> list = new ArrayList<String>(params.keySet());\r
106                 for(int i=0; i < list.size(); i++){\r
107                         String key = list.get(i);\r
108                         Object value = params.get(key);\r
109                         if(value instanceof String){\r
110                                 setString(key, (String)value);\r
111                         }else if(value instanceof Integer){\r
112                                 setInt(key, ((Integer)value).intValue());\r
113                         }else if(value instanceof Long){\r
114                                 setLong(key, (Long)value);\r
115                         }else if(value instanceof java.util.Date){\r
116                                 setTimestamp(key,new Timestamp(((java.util.Date)value).getTime()));\r
117                         }else if(value instanceof Boolean){\r
118                                 setBoolean(key, (Boolean)value);\r
119                         }else if(value instanceof byte[]){\r
120                                 // setObjectまかせでいいかもしれない\r
121                                 setBytes(key, (byte[])value);\r
122                         }else{\r
123                                 setObject(key, value);\r
124                                 if(value==null){\r
125                                         logger.debug("bind as object["+ key +":NULL]");\r
126                                 }else{\r
127                                         logger.debug("bind as object["+ key +":"+ value.getClass().getName() +"]");\r
128                                 }\r
129                         }\r
130                 }\r
131         }\r
132 \r
133         /**\r
134          * パラメータ名での設定(String)。\r
135          *\r
136          * @param key\r
137          * @param x\r
138          * @throws SQLException\r
139          */\r
140         public void setString(String key, String x) throws SQLException {\r
141                 List<Integer> paramNums = paramMap.get(key);\r
142                 if (paramNums == null) {\r
143                         throw new SQLException("No such key [" + key + "]");\r
144                 }\r
145                 for (int i = 0; i < paramNums.size(); i++) {\r
146                         Integer num = paramNums.get(i);\r
147                         st.setString(num.intValue(), x);\r
148                         logger.debug( "[" + num + "]:" + key + "[" + x + "]");\r
149                 }\r
150 \r
151                 // ログ\r
152                 if(x==null){\r
153                         logParam(":"+key, "NULL");\r
154                 }else{\r
155                         logParam(":"+key, "'"+x+"'");\r
156                 }\r
157 \r
158         }\r
159 \r
160         /**\r
161          * パラメータ名での設定(int)。\r
162          *\r
163          * @param key\r
164          * @param x\r
165          * @throws SQLException\r
166          */\r
167         public void setInt(String key, int x) throws SQLException {\r
168                 List<Integer> paramNums = paramMap.get(key);\r
169                 if (paramNums == null) {\r
170                         throw new SQLException("No such key [" + key + "]");\r
171                 }\r
172                 for (int i = 0; i < paramNums.size(); i++) {\r
173                         Integer num = paramNums.get(i);\r
174                         st.setInt(num.intValue(), x);\r
175                         logger.debug( "[" + num + "]:" + key + "[" + x + "]");\r
176                 }\r
177 \r
178                 // ログ\r
179                 logParam(":"+key, String.valueOf(x));\r
180         }\r
181 \r
182         /**\r
183          * パラメータ名での設定(byte)。\r
184          *\r
185          * @param key\r
186          * @param x\r
187          * @throws SQLException\r
188          */\r
189         public void setByte(String key, byte x) throws SQLException {\r
190                 List<Integer> paramNums = paramMap.get(key);\r
191                 if (paramNums == null) {\r
192                         throw new SQLException("No such key [" + key + "]");\r
193                 }\r
194                 for (int i = 0; i < paramNums.size(); i++) {\r
195                         Integer num = paramNums.get(i);\r
196                         st.setByte(num.intValue(), x);\r
197                 }\r
198                 // ログ\r
199                 logParam(":"+key, String.valueOf(x));\r
200         }\r
201 \r
202         /**\r
203          * パラメータ名での設定(float)。\r
204          *\r
205          * @param key\r
206          * @param x\r
207          * @throws SQLException\r
208          */\r
209         public void setFloat(String key, float x) throws SQLException {\r
210                 List<Integer> paramNums = paramMap.get(key);\r
211                 if (paramNums == null) {\r
212                         throw new SQLException("No such key [" + key + "]");\r
213                 }\r
214                 for (int i = 0; i < paramNums.size(); i++) {\r
215                         Integer num = paramNums.get(i);\r
216                         st.setFloat(num.intValue(), x);\r
217                 }\r
218                 // ログ\r
219                 logParam(":"+key, String.valueOf(x));\r
220         }\r
221 \r
222         /**\r
223          * パラメータ名での設定(double)。\r
224          *\r
225          * @param key\r
226          * @param x\r
227          * @throws SQLException\r
228          */\r
229         public void setDouble(String key, double x) throws SQLException {\r
230                 List<Integer> paramNums = paramMap.get(key);\r
231                 if (paramNums == null) {\r
232                         throw new SQLException("No such key [" + key + "]");\r
233                 }\r
234                 for (int i = 0; i < paramNums.size(); i++) {\r
235                         Integer num = paramNums.get(i);\r
236                         st.setDouble(num.intValue(), x);\r
237                 }\r
238                 // ログ\r
239                 logParam(":"+key, String.valueOf(x));\r
240         }\r
241 \r
242         /**\r
243          * パラメータ名での設定(null)。\r
244          *\r
245          * @param key\r
246          * @param sqlType\r
247          * @throws SQLException\r
248          */\r
249         public void setNull(String key, int sqlType) throws SQLException {\r
250                 List<Integer> paramNums = paramMap.get(key);\r
251                 if (paramNums == null) {\r
252                         throw new SQLException("No such key [" + key + "]");\r
253                 }\r
254                 for (int i = 0; i < paramNums.size(); i++) {\r
255                         Integer num = paramNums.get(i);\r
256                         st.setNull(num.intValue(), sqlType);\r
257                 }\r
258                 // ログ\r
259                 logParam(":"+key, "NULL");\r
260         }\r
261 \r
262         /**\r
263          * パラメータ名での設定(long)。\r
264          *\r
265          * @param key\r
266          * @param x\r
267          * @throws SQLException\r
268          */\r
269         public void setLong(String key, long x) throws SQLException {\r
270                 List<Integer> paramNums = paramMap.get(key);\r
271                 if (paramNums == null) {\r
272                         throw new SQLException("No such key [" + key + "]");\r
273                 }\r
274                 for (int i = 0; i < paramNums.size(); i++) {\r
275                         Integer num = paramNums.get(i);\r
276                         st.setLong(num.intValue(), x);\r
277                 }\r
278                 // ログ\r
279                 logParam(":"+key, String.valueOf(x));\r
280         }\r
281 \r
282         /**\r
283          * パラメータ名での設定(short)。\r
284          *\r
285          * @param key\r
286          * @param x\r
287          * @throws SQLException\r
288          */\r
289         public void setShort(String key, short x) throws SQLException {\r
290                 List<Integer> paramNums = paramMap.get(key);\r
291                 if (paramNums == null) {\r
292                         throw new SQLException("No such key [" + key + "]");\r
293                 }\r
294                 for (int i = 0; i < paramNums.size(); i++) {\r
295                         Integer num = paramNums.get(i);\r
296                         st.setShort(num.intValue(), x);\r
297                 }\r
298                 logParam(":"+key, String.valueOf(x));\r
299         }\r
300 \r
301         /**\r
302          * パラメータ名での設定(boolean)。\r
303          *\r
304          * @param key\r
305          * @param x\r
306          * @throws SQLException\r
307          */\r
308         public void setBoolean(String key, boolean x) throws SQLException {\r
309                 List<Integer> paramNums = paramMap.get(key);\r
310                 if (paramNums == null) {\r
311                         throw new SQLException("No such key [" + key + "]");\r
312                 }\r
313                 for (int i = 0; i < paramNums.size(); i++) {\r
314                         Integer num = paramNums.get(i);\r
315                         st.setBoolean(num.intValue(), x);\r
316                 }\r
317                 logParam(":"+key, String.valueOf(x));\r
318         }\r
319 \r
320         /**\r
321          * パラメータ名での設定(byte[])。\r
322          *\r
323          * @param key\r
324          * @param x\r
325          * @throws SQLException\r
326          */\r
327         public void setBytes(String key, byte[] x) throws SQLException {\r
328                 List<Integer> paramNums = paramMap.get(key);\r
329                 if (paramNums == null) {\r
330                         throw new SQLException("No such key [" + key + "]");\r
331                 }\r
332                 for (int i = 0; i < paramNums.size(); i++) {\r
333                         Integer num = paramNums.get(i);\r
334                         st.setBytes(num.intValue(), x);\r
335                 }\r
336                 // ログ\r
337                 if(x==null){\r
338                         logParam(":"+key, "NULL");\r
339                 }else if(x.length<=10){\r
340                         // 先頭の10バイトだけ\r
341                         logParam(":"+key, "'"+StringUtils.toHex(x, ":")+"'");\r
342                 }else{\r
343                         byte[] x2 = new byte[10];\r
344                         System.arraycopy(x, 0, x2, 0, 10);\r
345                         logParam(":"+key, "'"+StringUtils.toHex(x2, ":")+"...'");\r
346                 }\r
347         }\r
348 \r
349         /**\r
350          * パラメータ名での設定(java.sql.Date)。\r
351          *\r
352          * @param key\r
353          * @param x\r
354          * @throws SQLException\r
355          */\r
356         public void setDate(String key, Date x) throws SQLException {\r
357                 List<Integer> paramNums = paramMap.get(key);\r
358                 if (paramNums == null) {\r
359                         throw new SQLException("No such key [" + key + "]");\r
360                 }\r
361                 for (int i = 0; i < paramNums.size(); i++) {\r
362                         Integer num = paramNums.get(i);\r
363                         st.setDate(num.intValue(), x);\r
364                 }\r
365 \r
366                 // ログ\r
367                 if(x==null){\r
368                         logParam(":"+key, "NULL");\r
369                 }else{\r
370                         SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");\r
371                         logParam(":"+key, "'"+sdf.format(x)+"'");\r
372                 }\r
373         }\r
374 \r
375         /**\r
376          * パラメータ名での設定(java.sql.Time)。\r
377          *\r
378          * @param key\r
379          * @param x\r
380          * @throws SQLException\r
381          */\r
382         public void setTime(String key, Time x) throws SQLException {\r
383                 List<Integer> paramNums = paramMap.get(key);\r
384                 if (paramNums == null) {\r
385                         throw new SQLException("No such key [" + key + "]");\r
386                 }\r
387                 for (int i = 0; i < paramNums.size(); i++) {\r
388                         Integer num = paramNums.get(i);\r
389                         st.setTime(num.intValue(), x);\r
390                 }\r
391 \r
392                 // ログ\r
393                 if(x==null){\r
394                         logParam(":"+key, "NULL");\r
395                 }else{\r
396                         SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");\r
397                         logParam(":"+key, "'"+sdf.format(x)+"'");\r
398                 }\r
399         }\r
400 \r
401         /**\r
402          * パラメータ名での設定(java.sql.Timestamp)。\r
403          *\r
404          * @param key\r
405          * @param x\r
406          * @throws SQLException\r
407          */\r
408         public void setTimestamp(String key, Timestamp x) throws SQLException {\r
409                 List<Integer> paramNums = paramMap.get(key);\r
410                 if (paramNums == null) {\r
411                         throw new SQLException("No such key [" + key + "]");\r
412                 }\r
413                 for (int i = 0; i < paramNums.size(); i++) {\r
414                         Integer num = paramNums.get(i);\r
415                         st.setTimestamp(num.intValue(), x);\r
416                 }\r
417 \r
418                 // ログ\r
419                 if(x==null){\r
420                         logParam(":"+key, "NULL");\r
421                 }else{\r
422                         SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");\r
423                         logParam(":"+key, "'"+sdf.format(x)+"'");\r
424                 }\r
425         }\r
426 \r
427         /**\r
428          * パラメータ名での設定(java.math.BigDecimal)。\r
429          *\r
430          * @param key\r
431          * @param x\r
432          * @throws SQLException\r
433          */\r
434         public void setBigDecimal(String key, BigDecimal x) throws SQLException {\r
435                 List<Integer> paramNums = paramMap.get(key);\r
436                 if (paramNums == null) {\r
437                         throw new SQLException("No such key [" + key + "]");\r
438                 }\r
439                 for (int i = 0; i < paramNums.size(); i++) {\r
440                         Integer num = paramNums.get(i);\r
441                         st.setBigDecimal(num.intValue(), x);\r
442                 }\r
443 \r
444                 // ログ\r
445                 if(x==null){\r
446                         logParam(":"+key, "NULL");\r
447                 }else{\r
448                         logParam(":"+key, x.toString());\r
449                 }\r
450         }\r
451 \r
452         /**\r
453          * パラメータ名での設定(java.sql.Blob)。\r
454          * @param key\r
455          * @param x\r
456          * @throws SQLException\r
457          */\r
458         public void setBlob(String key, Blob x) throws SQLException {\r
459                 List<Integer> paramNums = paramMap.get(key);\r
460                 if (paramNums == null) {\r
461                         throw new SQLException("No such key [" + key + "]");\r
462                 }\r
463                 for (int i = 0; i < paramNums.size(); i++) {\r
464                         Integer num = paramNums.get(i);\r
465                         st.setBlob(num.intValue(), x);\r
466                 }\r
467 \r
468                 // ログ\r
469                 if(x==null){\r
470                         logParam(":"+key, "NULL");\r
471                 }else{\r
472                         logParam(":"+key, "'"+x+"'");\r
473                 }\r
474         }\r
475 \r
476         /**\r
477          * パラメータ名での設定(java.lang.Object)。\r
478          * @param key\r
479          * @param x\r
480          * @throws SQLException\r
481          */\r
482         public void setObject(String key, Object x) throws SQLException {\r
483                 List<Integer> paramNums = paramMap.get(key);\r
484                 if (paramNums == null) {\r
485                         throw new SQLException("No such key [" + key + "]");\r
486                 }\r
487                 for (int i = 0; i < paramNums.size(); i++) {\r
488                         Integer num = paramNums.get(i);\r
489                         st.setObject(num.intValue(), x);\r
490                 }\r
491 \r
492                 // ログ\r
493                 if(x==null){\r
494                         logParam(":"+key, "NULL");\r
495                 }else{\r
496                         logParam(":"+key, "'"+x+"'");\r
497                 }\r
498         }\r
499 \r
500         /*\r
501          * (非 Javadoc)\r
502          *\r
503          * @see java.sql.PreparedStatement#executeQuery()\r
504          */\r
505         public ResultSet executeQuery() throws SQLException {\r
506                 logger.info(MethodUtil.getMethodName(CLASSNAME) +"\n"+sql);\r
507                 ResultSet result = st.executeQuery();\r
508                 return result;\r
509         }\r
510 \r
511         /*\r
512          * (非 Javadoc)\r
513          *\r
514          * @see java.sql.PreparedStatement#executeUpdate()\r
515          */\r
516         public int executeUpdate() throws SQLException {\r
517                 logger.info(MethodUtil.getMethodName(CLASSNAME) +"\n"+sql);\r
518                 int result = st.executeUpdate();\r
519                 return result;\r
520         }\r
521 \r
522         /*\r
523          * (非 Javadoc)\r
524          *\r
525          * @see java.sql.PreparedStatement#execute()\r
526          */\r
527         public boolean execute() throws SQLException {\r
528                 logger.info(MethodUtil.getMethodName(CLASSNAME) +"\n"+sql);\r
529                 boolean result = st.execute();\r
530                 return result;\r
531         }\r
532 \r
533         /*\r
534          * ------------------------------------------------------ PreaparedStatement\r
535          * ------------------------------------------------------\r
536          */\r
537 \r
538         /*\r
539          * (非 Javadoc)\r
540          *\r
541          * @see java.sql.PreparedStatement#addBatch()\r
542          */\r
543         public void addBatch() throws SQLException {\r
544                 st.addBatch();\r
545 \r
546         }\r
547         /*\r
548          * (非 Javadoc)\r
549          *\r
550          * @see java.sql.PreparedStatement#clearParameters()\r
551          */\r
552         public void clearParameters() throws SQLException {\r
553                 st.clearParameters();\r
554 \r
555         }\r
556 \r
557         /*\r
558          * (非 Javadoc)\r
559          *\r
560          * @see java.sql.PreparedStatement#setByte(int, byte)\r
561          */\r
562         public void setByte(int parameterIndex, byte x) throws SQLException {\r
563                 st.setByte(parameterIndex, x);\r
564         }\r
565 \r
566         /*\r
567          * (非 Javadoc)\r
568          *\r
569          * @see java.sql.PreparedStatement#setDouble(int, double)\r
570          */\r
571         public void setDouble(int parameterIndex, double x) throws SQLException {\r
572                 st.setDouble(parameterIndex, x);\r
573         }\r
574 \r
575         /*\r
576          * (非 Javadoc)\r
577          *\r
578          * @see java.sql.PreparedStatement#setFloat(int, float)\r
579          */\r
580         public void setFloat(int parameterIndex, float x) throws SQLException {\r
581                 st.setFloat(parameterIndex, x);\r
582         }\r
583 \r
584         /*\r
585          * (非 Javadoc)\r
586          *\r
587          * @see java.sql.PreparedStatement#setInt(int, int)\r
588          */\r
589         public void setInt(int parameterIndex, int x) throws SQLException {\r
590                 st.setInt(parameterIndex, x);\r
591         }\r
592 \r
593         /*\r
594          * (非 Javadoc)\r
595          *\r
596          * @see java.sql.PreparedStatement#setNull(int, int)\r
597          */\r
598         public void setNull(int parameterIndex, int sqlType) throws SQLException {\r
599                 st.setNull(parameterIndex, sqlType);\r
600         }\r
601 \r
602         /*\r
603          * (非 Javadoc)\r
604          *\r
605          * @see java.sql.PreparedStatement#setLong(int, long)\r
606          */\r
607         public void setLong(int parameterIndex, long x) throws SQLException {\r
608                 st.setLong(parameterIndex, x);\r
609         }\r
610 \r
611         /*\r
612          * (非 Javadoc)\r
613          *\r
614          * @see java.sql.PreparedStatement#setShort(int, short)\r
615          */\r
616         public void setShort(int parameterIndex, short x) throws SQLException {\r
617                 st.setShort(parameterIndex, x);\r
618         }\r
619 \r
620         /*\r
621          * (非 Javadoc)\r
622          *\r
623          * @see java.sql.PreparedStatement#setBoolean(int, boolean)\r
624          */\r
625         public void setBoolean(int parameterIndex, boolean x) throws SQLException {\r
626                 st.setBoolean(parameterIndex, x);\r
627         }\r
628 \r
629         /*\r
630          * (非 Javadoc)\r
631          *\r
632          * @see java.sql.PreparedStatement#setBytes(int, byte[])\r
633          */\r
634         public void setBytes(int parameterIndex, byte[] x) throws SQLException {\r
635                 st.setBytes(parameterIndex, x);\r
636         }\r
637 \r
638         /*\r
639          * (非 Javadoc)\r
640          *\r
641          * @see java.sql.PreparedStatement#setAsciiStream(int, java.io.InputStream,\r
642          *      int)\r
643          */\r
644         public void setAsciiStream(int parameterIndex, InputStream x, int length)\r
645                         throws SQLException {\r
646                 st.setAsciiStream(parameterIndex, x, length);\r
647         }\r
648 \r
649         /*\r
650          * (非 Javadoc)\r
651          *\r
652          * @see java.sql.PreparedStatement#setBinaryStream(int, java.io.InputStream,\r
653          *      int)\r
654          */\r
655         public void setBinaryStream(int parameterIndex, InputStream x, int length)\r
656                         throws SQLException {\r
657                 st.setBinaryStream(parameterIndex, x, length);\r
658         }\r
659 \r
660         /**\r
661          * @see java.sql.PreparedStatement#setUnicodeStream(int,\r
662          *      java.io.InputStream, int)\r
663          * @deprecated\r
664          */\r
665         public void setUnicodeStream(int parameterIndex, InputStream x, int length)\r
666                         throws SQLException {\r
667                 st.setUnicodeStream(parameterIndex, x, length);\r
668         }\r
669 \r
670         /*\r
671          * (非 Javadoc)\r
672          *\r
673          * @see java.sql.PreparedStatement#setCharacterStream(int, java.io.Reader,\r
674          *      int)\r
675          */\r
676         public void setCharacterStream(int parameterIndex, Reader reader, int length)\r
677                         throws SQLException {\r
678                 st.setCharacterStream(parameterIndex, reader, length);\r
679         }\r
680 \r
681         /*\r
682          * (非 Javadoc)\r
683          *\r
684          * @see java.sql.PreparedStatement#setObject(int, java.lang.Object)\r
685          */\r
686         public void setObject(int parameterIndex, Object x) throws SQLException {\r
687                 st.setObject(parameterIndex, x);\r
688 \r
689         }\r
690 \r
691         /*\r
692          * (非 Javadoc)\r
693          *\r
694          * @see java.sql.PreparedStatement#setObject(int, java.lang.Object, int)\r
695          */\r
696         public void setObject(int parameterIndex, Object x, int targetSqlType)\r
697                         throws SQLException {\r
698                 st.setObject(parameterIndex, x, targetSqlType);\r
699         }\r
700 \r
701         /*\r
702          * (非 Javadoc)\r
703          *\r
704          * @see java.sql.PreparedStatement#setObject(int, java.lang.Object, int,\r
705          *      int)\r
706          */\r
707         public void setObject(int parameterIndex, Object x, int targetSqlType,\r
708                         int scale) throws SQLException {\r
709                 st.setObject(parameterIndex, x, targetSqlType, scale);\r
710         }\r
711 \r
712         /*\r
713          * (非 Javadoc)\r
714          *\r
715          * @see java.sql.PreparedStatement#setNull(int, int, java.lang.String)\r
716          */\r
717         public void setNull(int paramIndex, int sqlType, String typeName)\r
718                         throws SQLException {\r
719                 st.setNull(paramIndex, sqlType, typeName);\r
720         }\r
721 \r
722         /*\r
723          * (非 Javadoc)\r
724          *\r
725          * @see java.sql.PreparedStatement#setString(int, java.lang.String)\r
726          */\r
727         public void setString(int parameterIndex, String x) throws SQLException {\r
728                 st.setString(parameterIndex, x);\r
729         }\r
730 \r
731         /*\r
732          * (非 Javadoc)\r
733          *\r
734          * @see java.sql.PreparedStatement#setBigDecimal(int, java.math.BigDecimal)\r
735          */\r
736         public void setBigDecimal(int parameterIndex, BigDecimal x)\r
737                         throws SQLException {\r
738                 st.setBigDecimal(parameterIndex, x);\r
739         }\r
740 \r
741         /*\r
742          * (非 Javadoc)\r
743          *\r
744          * @see java.sql.PreparedStatement#setURL(int, java.net.URL)\r
745          */\r
746         public void setURL(int parameterIndex, URL x) throws SQLException {\r
747                 st.setURL(parameterIndex, x);\r
748         }\r
749 \r
750         /*\r
751          * (非 Javadoc)\r
752          *\r
753          * @see java.sql.PreparedStatement#setArray(int, java.sql.Array)\r
754          */\r
755         public void setArray(int i, Array x) throws SQLException {\r
756                 st.setArray(i, x);\r
757         }\r
758 \r
759         /*\r
760          * (非 Javadoc)\r
761          *\r
762          * @see java.sql.PreparedStatement#setBlob(int, java.sql.Blob)\r
763          */\r
764         public void setBlob(int i, Blob x) throws SQLException {\r
765                 st.setBlob(i, x);\r
766         }\r
767 \r
768         /*\r
769          * (非 Javadoc)\r
770          *\r
771          * @see java.sql.PreparedStatement#setClob(int, java.sql.Clob)\r
772          */\r
773         public void setClob(int i, Clob x) throws SQLException {\r
774                 st.setClob(i, x);\r
775         }\r
776 \r
777         /*\r
778          * (非 Javadoc)\r
779          *\r
780          * @see java.sql.PreparedStatement#setDate(int, java.sql.Date)\r
781          */\r
782         public void setDate(int parameterIndex, Date x) throws SQLException {\r
783                 st.setDate(parameterIndex, x);\r
784         }\r
785 \r
786         /*\r
787          * (非 Javadoc)\r
788          *\r
789          * @see java.sql.PreparedStatement#getParameterMetaData()\r
790          */\r
791         public ParameterMetaData getParameterMetaData() throws SQLException {\r
792                 return st.getParameterMetaData();\r
793         }\r
794 \r
795         /*\r
796          * (非 Javadoc)\r
797          *\r
798          * @see java.sql.PreparedStatement#setRef(int, java.sql.Ref)\r
799          */\r
800         public void setRef(int i, Ref x) throws SQLException {\r
801                 st.setRef(i, x);\r
802         }\r
803 \r
804         /*\r
805          * (非 Javadoc)\r
806          *\r
807          * @see java.sql.PreparedStatement#getMetaData()\r
808          */\r
809         public ResultSetMetaData getMetaData() throws SQLException {\r
810                 return st.getMetaData();\r
811         }\r
812 \r
813         /*\r
814          * (非 Javadoc)\r
815          *\r
816          * @see java.sql.PreparedStatement#setTime(int, java.sql.Time)\r
817          */\r
818         public void setTime(int parameterIndex, Time x) throws SQLException {\r
819                 st.setTime(parameterIndex, x);\r
820         }\r
821 \r
822         /*\r
823          * (非 Javadoc)\r
824          *\r
825          * @see java.sql.PreparedStatement#setTimestamp(int, java.sql.Timestamp)\r
826          */\r
827         public void setTimestamp(int parameterIndex, Timestamp x)\r
828                         throws SQLException {\r
829                 st.setTimestamp(parameterIndex, x);\r
830         }\r
831 \r
832         /*\r
833          * (非 Javadoc)\r
834          *\r
835          * @see java.sql.PreparedStatement#setDate(int, java.sql.Date,\r
836          *      java.util.Calendar)\r
837          */\r
838         public void setDate(int parameterIndex, Date x, Calendar cal)\r
839                         throws SQLException {\r
840                 st.setDate(parameterIndex, x);\r
841         }\r
842 \r
843         /*\r
844          * (非 Javadoc)\r
845          *\r
846          * @see java.sql.PreparedStatement#setTime(int, java.sql.Time,\r
847          *      java.util.Calendar)\r
848          */\r
849         public void setTime(int parameterIndex, Time x, Calendar cal)\r
850                         throws SQLException {\r
851                 st.setTime(parameterIndex, x, cal);\r
852         }\r
853 \r
854         /*\r
855          * (非 Javadoc)\r
856          *\r
857          * @see java.sql.PreparedStatement#setTimestamp(int, java.sql.Timestamp,\r
858          *      java.util.Calendar)\r
859          */\r
860         public void setTimestamp(int parameterIndex, Timestamp x, Calendar cal)\r
861                         throws SQLException {\r
862                 st.setTimestamp(parameterIndex, x, cal);\r
863         }\r
864 \r
865         /**\r
866          * @param parameterIndex\r
867          * @param x\r
868          * @param length\r
869          * @throws SQLException\r
870          * @see java.sql.PreparedStatement#setAsciiStream(int, java.io.InputStream, long)\r
871          */\r
872         public void setAsciiStream(int parameterIndex, InputStream x, long length)\r
873                         throws SQLException {\r
874                 st.setAsciiStream(parameterIndex, x, length);\r
875         }\r
876 \r
877         /**\r
878          * @param parameterIndex\r
879          * @param x\r
880          * @throws SQLException\r
881          * @see java.sql.PreparedStatement#setAsciiStream(int, java.io.InputStream)\r
882          */\r
883         public void setAsciiStream(int parameterIndex, InputStream x)\r
884                         throws SQLException {\r
885                 st.setAsciiStream(parameterIndex, x);\r
886         }\r
887 \r
888         /**\r
889          * @param parameterIndex\r
890          * @param x\r
891          * @param length\r
892          * @throws SQLException\r
893          * @see java.sql.PreparedStatement#setBinaryStream(int, java.io.InputStream, long)\r
894          */\r
895         public void setBinaryStream(int parameterIndex, InputStream x, long length)\r
896                         throws SQLException {\r
897                 st.setBinaryStream(parameterIndex, x, length);\r
898         }\r
899 \r
900         /**\r
901          * @param parameterIndex\r
902          * @param x\r
903          * @throws SQLException\r
904          * @see java.sql.PreparedStatement#setBinaryStream(int, java.io.InputStream)\r
905          */\r
906         public void setBinaryStream(int parameterIndex, InputStream x)\r
907                         throws SQLException {\r
908                 st.setBinaryStream(parameterIndex, x);\r
909         }\r
910 \r
911         /**\r
912          * @param parameterIndex\r
913          * @param inputStream\r
914          * @param length\r
915          * @throws SQLException\r
916          * @see java.sql.PreparedStatement#setBlob(int, java.io.InputStream, long)\r
917          */\r
918         public void setBlob(int parameterIndex, InputStream inputStream, long length)\r
919                         throws SQLException {\r
920                 st.setBlob(parameterIndex, inputStream, length);\r
921         }\r
922 \r
923         /**\r
924          * @param parameterIndex\r
925          * @param inputStream\r
926          * @throws SQLException\r
927          * @see java.sql.PreparedStatement#setBlob(int, java.io.InputStream)\r
928          */\r
929         public void setBlob(int parameterIndex, InputStream inputStream)\r
930                         throws SQLException {\r
931                 st.setBlob(parameterIndex, inputStream);\r
932         }\r
933 \r
934         /**\r
935          * @param parameterIndex\r
936          * @param reader\r
937          * @param length\r
938          * @throws SQLException\r
939          * @see java.sql.PreparedStatement#setCharacterStream(int, java.io.Reader, long)\r
940          */\r
941         public void setCharacterStream(int parameterIndex, Reader reader,\r
942                         long length) throws SQLException {\r
943                 st.setCharacterStream(parameterIndex, reader, length);\r
944         }\r
945 \r
946         /**\r
947          * @param parameterIndex\r
948          * @param reader\r
949          * @throws SQLException\r
950          * @see java.sql.PreparedStatement#setCharacterStream(int, java.io.Reader)\r
951          */\r
952         public void setCharacterStream(int parameterIndex, Reader reader)\r
953                         throws SQLException {\r
954                 st.setCharacterStream(parameterIndex, reader);\r
955         }\r
956 \r
957         /**\r
958          * @param parameterIndex\r
959          * @param reader\r
960          * @param length\r
961          * @throws SQLException\r
962          * @see java.sql.PreparedStatement#setClob(int, java.io.Reader, long)\r
963          */\r
964         public void setClob(int parameterIndex, Reader reader, long length)\r
965                         throws SQLException {\r
966                 st.setClob(parameterIndex, reader, length);\r
967         }\r
968 \r
969         /**\r
970          * @param parameterIndex\r
971          * @param reader\r
972          * @throws SQLException\r
973          * @see java.sql.PreparedStatement#setClob(int, java.io.Reader)\r
974          */\r
975         public void setClob(int parameterIndex, Reader reader) throws SQLException {\r
976                 st.setClob(parameterIndex, reader);\r
977         }\r
978 \r
979         /**\r
980          * @param parameterIndex\r
981          * @param value\r
982          * @param length\r
983          * @throws SQLException\r
984          * @see java.sql.PreparedStatement#setNCharacterStream(int, java.io.Reader, long)\r
985          */\r
986         public void setNCharacterStream(int parameterIndex, Reader value,\r
987                         long length) throws SQLException {\r
988                 st.setNCharacterStream(parameterIndex, value, length);\r
989         }\r
990 \r
991         /**\r
992          * @param parameterIndex\r
993          * @param value\r
994          * @throws SQLException\r
995          * @see java.sql.PreparedStatement#setNCharacterStream(int, java.io.Reader)\r
996          */\r
997         public void setNCharacterStream(int parameterIndex, Reader value)\r
998                         throws SQLException {\r
999                 st.setNCharacterStream(parameterIndex, value);\r
1000         }\r
1001 \r
1002         /**\r
1003          * @param parameterIndex\r
1004          * @param value\r
1005          * @throws SQLException\r
1006          * @see java.sql.PreparedStatement#setNClob(int, java.sql.NClob)\r
1007          */\r
1008         public void setNClob(int parameterIndex, NClob value) throws SQLException {\r
1009                 st.setNClob(parameterIndex, value);\r
1010         }\r
1011 \r
1012         /**\r
1013          * @param parameterIndex\r
1014          * @param reader\r
1015          * @param length\r
1016          * @throws SQLException\r
1017          * @see java.sql.PreparedStatement#setNClob(int, java.io.Reader, long)\r
1018          */\r
1019         public void setNClob(int parameterIndex, Reader reader, long length)\r
1020                         throws SQLException {\r
1021                 st.setNClob(parameterIndex, reader, length);\r
1022         }\r
1023 \r
1024         /**\r
1025          * @param parameterIndex\r
1026          * @param reader\r
1027          * @throws SQLException\r
1028          * @see java.sql.PreparedStatement#setNClob(int, java.io.Reader)\r
1029          */\r
1030         public void setNClob(int parameterIndex, Reader reader) throws SQLException {\r
1031                 st.setNClob(parameterIndex, reader);\r
1032         }\r
1033 \r
1034         /**\r
1035          * @param parameterIndex\r
1036          * @param value\r
1037          * @throws SQLException\r
1038          * @see java.sql.PreparedStatement#setNString(int, java.lang.String)\r
1039          */\r
1040         public void setNString(int parameterIndex, String value)\r
1041                         throws SQLException {\r
1042                 st.setNString(parameterIndex, value);\r
1043         }\r
1044 \r
1045         /**\r
1046          * @param parameterIndex\r
1047          * @param x\r
1048          * @throws SQLException\r
1049          * @see java.sql.PreparedStatement#setRowId(int, java.sql.RowId)\r
1050          */\r
1051         public void setRowId(int parameterIndex, RowId x) throws SQLException {\r
1052                 st.setRowId(parameterIndex, x);\r
1053         }\r
1054 \r
1055         /**\r
1056          * @param parameterIndex\r
1057          * @param xmlObject\r
1058          * @throws SQLException\r
1059          * @see java.sql.PreparedStatement#setSQLXML(int, java.sql.SQLXML)\r
1060          */\r
1061         public void setSQLXML(int parameterIndex, SQLXML xmlObject)\r
1062                         throws SQLException {\r
1063                 st.setSQLXML(parameterIndex, xmlObject);\r
1064         }\r
1065 \r
1066         /**\r
1067          * @param iface\r
1068          * @return\r
1069          * @throws SQLException\r
1070          * @see java.sql.Wrapper#isWrapperFor(java.lang.Class)\r
1071          */\r
1072         @Override\r
1073         public boolean isWrapperFor(Class<?> iface) throws SQLException {\r
1074                 return st.isWrapperFor(iface);\r
1075         }\r
1076 \r
1077         /**\r
1078          * @param <T>\r
1079          * @param iface\r
1080          * @return\r
1081          * @throws SQLException\r
1082          * @see java.sql.Wrapper#unwrap(java.lang.Class)\r
1083          */\r
1084         @Override\r
1085         @SuppressWarnings("unchecked")\r
1086         public <T> T unwrap(Class<T> iface) throws SQLException {\r
1087                 return (T)this;\r
1088         }\r
1089 \r
1090 }