• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package SQLite.JDBC2z;
2 
3 import java.sql.*;
4 import java.math.BigDecimal;
5 import java.util.*;
6 
7 class BatchArg {
8     String arg;
9     boolean blob;
10 
BatchArg(String arg, boolean blob)11     BatchArg(String arg, boolean blob) {
12 	if (arg == null) {
13 	    this.arg = null;
14 	} else {
15 	    this.arg = new String(arg);
16 	}
17 	this.blob = blob;
18     }
19 }
20 
21 public class JDBCPreparedStatement extends JDBCStatement
22     implements java.sql.PreparedStatement {
23 
24     private String sql;
25     private String args[];
26     private boolean blobs[];
27     private ArrayList<BatchArg> batch;
28     private static final boolean nullrepl =
29 	SQLite.Database.version().compareTo("2.5.0") < 0;
30 
31     public JDBCPreparedStatement(JDBCConnection conn, String sql) {
32 	super(conn);
33 	this.args = null;
34 	this.blobs = null;
35 	this.batch = null;
36 	this.sql = fixup(sql);
37     }
38 
39     private String fixup(String sql) {
40 	StringBuffer sb = new StringBuffer();
41 	boolean inq = false;
42 	int nparm = 0;
43 	for (int i = 0; i < sql.length(); i++) {
44 	    char c = sql.charAt(i);
45 	    if (c == '\'') {
46 		if (inq) {
47                     char nextChar = 0;
48                     if(i + 1 < sql.length()) {
49                         nextChar = sql.charAt(i + 1);
50                     }
51 		    if (nextChar == '\'') {
52                         sb.append(c);
53                         sb.append(nextChar);
54                         i++;
55                     } else {
56 			inq = false;
57                         sb.append(c);
58                     }
59 		} else {
60 		    inq = true;
61                     sb.append(c);
62 		}
63 	    } else if (c == '?') {
64 		if (inq) {
65 		    sb.append(c);
66 		} else {
67 		    ++nparm;
68 		    sb.append(nullrepl ? "'%q'" : "%Q");
69 		}
70 	    } else if (c == ';') {
71 		if (!inq) {
72 		    break;
73 		}
74 		sb.append(c);
75 	    } else if (c == '%') {
76 		sb.append("%%");
77 	    } else {
78 		sb.append(c);
79 	    }
80 	}
81 	args = new String[nparm];
82 	blobs = new boolean[nparm];
83 	try {
84 	    clearParameters();
85 	} catch (SQLException e) {
86 	}
87 	return sb.toString();
88     }
89 
90     private String fixup2(String sql) {
91 	if (!conn.db.is3()) {
92 	    return sql;
93 	}
94 	StringBuffer sb = new StringBuffer();
95 	int parm = -1;
96 	for (int i = 0; i < sql.length(); i++) {
97 	    char c = sql.charAt(i);
98 	    if (c == '%') {
99 		sb.append(c);
100 		++i;
101 		c = sql.charAt(i);
102 		if (c == 'Q') {
103 		    parm++;
104 		    if (blobs[parm]) {
105 			c = 's';
106 		    }
107 		}
108 	    }
109 	    sb.append(c);
110 	}
111 	return sb.toString();
112     }
113 
114     public ResultSet executeQuery() throws SQLException {
115 	return executeQuery(fixup2(sql), args, false);
116     }
117 
118     public int executeUpdate() throws SQLException {
119 	executeQuery(fixup2(sql), args, true);
120 	return updcnt;
121     }
122 
123     public void setNull(int parameterIndex, int sqlType) throws SQLException {
124 	if (parameterIndex < 1 || parameterIndex > args.length) {
125 	    throw new SQLException("bad parameter index");
126 	}
127 	args[parameterIndex - 1] = nullrepl ? "" : null;
128 	blobs[parameterIndex - 1] = false;
129     }
130 
131     public void setBoolean(int parameterIndex, boolean x)
132 	throws SQLException {
133 	if (parameterIndex < 1 || parameterIndex > args.length) {
134 	    throw new SQLException("bad parameter index");
135 	}
136 	args[parameterIndex - 1] = x ? "1" : "0";
137 	blobs[parameterIndex - 1] = false;
138     }
139 
140     public void setByte(int parameterIndex, byte x) throws SQLException {
141 	if (parameterIndex < 1 || parameterIndex > args.length) {
142 	    throw new SQLException("bad parameter index");
143 	}
144 	args[parameterIndex - 1] = "" + x;
145 	blobs[parameterIndex - 1] = false;
146     }
147 
148     public void setShort(int parameterIndex, short x) throws SQLException {
149 	if (parameterIndex < 1 || parameterIndex > args.length) {
150 	    throw new SQLException("bad parameter index");
151 	}
152 	args[parameterIndex - 1] = "" + x;
153 	blobs[parameterIndex - 1] = false;
154     }
155 
156     public void setInt(int parameterIndex, int x) throws SQLException {
157 	if (parameterIndex < 1 || parameterIndex > args.length) {
158 	    throw new SQLException("bad parameter index");
159 	}
160 	args[parameterIndex - 1] = "" + x;
161 	blobs[parameterIndex - 1] = false;
162     }
163 
164     public void setLong(int parameterIndex, long x) throws SQLException {
165 	if (parameterIndex < 1 || parameterIndex > args.length) {
166 	    throw new SQLException("bad parameter index");
167 	}
168 	args[parameterIndex - 1] = "" + x;
169 	blobs[parameterIndex - 1] = false;
170     }
171 
172     public void setFloat(int parameterIndex, float x) throws SQLException {
173 	if (parameterIndex < 1 || parameterIndex > args.length) {
174 	    throw new SQLException("bad parameter index");
175 	}
176 	args[parameterIndex - 1] = "" + x;
177 	blobs[parameterIndex - 1] = false;
178     }
179 
180     public void setDouble(int parameterIndex, double x) throws SQLException {
181 	if (parameterIndex < 1 || parameterIndex > args.length) {
182 	    throw new SQLException("bad parameter index");
183 	}
184 	args[parameterIndex - 1] = "" + x;
185 	blobs[parameterIndex - 1] = false;
186     }
187 
188     public void setBigDecimal(int parameterIndex, BigDecimal x)
189 	throws SQLException {
190 	if (parameterIndex < 1 || parameterIndex > args.length) {
191 	    throw new SQLException("bad parameter index");
192 	}
193 	if (x == null) {
194 	    args[parameterIndex - 1] = nullrepl ? "" : null;
195 	} else {
196 	    args[parameterIndex - 1] = "" + x;
197 	}
198 	blobs[parameterIndex - 1] = false;
199     }
200 
201     public void setString(int parameterIndex, String x) throws SQLException {
202 	if (parameterIndex < 1 || parameterIndex > args.length) {
203 	    throw new SQLException("bad parameter index");
204 	}
205 	if (x == null) {
206 	    args[parameterIndex - 1] = nullrepl ? "" : null;
207 	} else {
208 	    args[parameterIndex - 1] = x;
209 	}
210 	blobs[parameterIndex - 1] = false;
211     }
212 
213     public void setBytes(int parameterIndex, byte x[]) throws SQLException {
214 	if (parameterIndex < 1 || parameterIndex > args.length) {
215 	    throw new SQLException("bad parameter index");
216 	}
217 	blobs[parameterIndex - 1] = false;
218 	if (x == null) {
219 	    args[parameterIndex - 1] = nullrepl ? "" : null;
220 	} else {
221 	    if (conn.db.is3()) {
222 		args[parameterIndex - 1] = SQLite.StringEncoder.encodeX(x);
223 		blobs[parameterIndex - 1] = true;
224 	    } else {
225 		args[parameterIndex - 1] = SQLite.StringEncoder.encode(x);
226 	    }
227 	}
228     }
229 
230     public void setDate(int parameterIndex, java.sql.Date x)
231 	throws SQLException {
232 	if (parameterIndex < 1 || parameterIndex > args.length) {
233 	    throw new SQLException("bad parameter index");
234 	}
235 	if (x == null) {
236 	    args[parameterIndex - 1] = nullrepl ? "" : null;
237 	} else {
238 	    if (conn.useJulian) {
239 		args[parameterIndex - 1] = java.lang.Double.toString(SQLite.Database.julian_from_long(x.getTime()));
240 	    } else {
241 		args[parameterIndex - 1] = x.toString();
242 	    }
243 	}
244 	blobs[parameterIndex - 1] = false;
245     }
246 
247     public void setTime(int parameterIndex, java.sql.Time x)
248 	throws SQLException {
249 	if (parameterIndex < 1 || parameterIndex > args.length) {
250 	    throw new SQLException("bad parameter index");
251 	}
252 	if (x == null) {
253 	    args[parameterIndex - 1] = nullrepl ? "" : null;
254 	} else {
255 	    if (conn.useJulian) {
256 		args[parameterIndex - 1] = java.lang.Double.toString(SQLite.Database.julian_from_long(x.getTime()));
257 	    } else {
258 		args[parameterIndex - 1] = x.toString();
259 	    }
260 	}
261 	blobs[parameterIndex - 1] = false;
262     }
263 
264     public void setTimestamp(int parameterIndex, java.sql.Timestamp x)
265 	throws SQLException {
266 	if (parameterIndex < 1 || parameterIndex > args.length) {
267 	    throw new SQLException("bad parameter index");
268 	}
269 	if (x == null) {
270 	    args[parameterIndex - 1] = nullrepl ? "" : null;
271 	} else {
272 	    if (conn.useJulian) {
273 		args[parameterIndex - 1] = java.lang.Double.toString(SQLite.Database.julian_from_long(x.getTime()));
274 	    } else {
275 		args[parameterIndex - 1] = x.toString();
276 	    }
277 	}
278 	blobs[parameterIndex - 1] = false;
279     }
280 
281     public void setAsciiStream(int parameterIndex, java.io.InputStream x,
282 			       int length) throws SQLException {
283 	throw new SQLException("not supported");
284     }
285 
286     @Deprecated
287     public void setUnicodeStream(int parameterIndex, java.io.InputStream x,
288 				 int length) throws SQLException {
289 	throw new SQLFeatureNotSupportedException();
290     }
291 
292     public void setBinaryStream(int parameterIndex, java.io.InputStream x,
293 				int length) throws SQLException {
294 	try {
295 	    byte[] data = new byte[length];
296 	    x.read(data, 0, length);
297 	    setBytes(parameterIndex, data);
298 	} catch (java.io.IOException e) {
299 	    throw new SQLException("I/O failed");
300 	}
301     }
302 
303     public void clearParameters() throws SQLException {
304 	for (int i = 0; i < args.length; i++) {
305 	    args[i] = nullrepl ? "" : null;
306 	    blobs[i] = false;
307 	}
308     }
309 
310     public void setObject(int parameterIndex, Object x, int targetSqlType,
311 			  int scale) throws SQLException {
312 	if (parameterIndex < 1 || parameterIndex > args.length) {
313 	    throw new SQLException("bad parameter index");
314 	}
315 	if (x == null) {
316 	    args[parameterIndex - 1] = nullrepl ? "" : null;
317 	} else {
318 	    if (x instanceof byte[]) {
319 		byte[] bx = (byte[]) x;
320 		if (conn.db.is3()) {
321 		    args[parameterIndex - 1] =
322 			  SQLite.StringEncoder.encodeX(bx);
323 		    blobs[parameterIndex - 1] = true;
324 		    return;
325 		}
326 		args[parameterIndex - 1] = SQLite.StringEncoder.encode(bx);
327 	    } else {
328 		args[parameterIndex - 1] = x.toString();
329 	    }
330 	}
331 	blobs[parameterIndex - 1] = false;
332     }
333 
334     public void setObject(int parameterIndex, Object x, int targetSqlType)
335 	throws SQLException {
336 	if (parameterIndex < 1 || parameterIndex > args.length) {
337 	    throw new SQLException("bad parameter index");
338 	}
339 	if (x == null) {
340 	    args[parameterIndex - 1] = nullrepl ? "" : null;
341 	} else {
342 	    if (x instanceof byte[]) {
343 		byte[] bx = (byte[]) x;
344 		if (conn.db.is3()) {
345 		    args[parameterIndex - 1] =
346 			SQLite.StringEncoder.encodeX(bx);
347 		    blobs[parameterIndex - 1] = true;
348 		    return;
349 		}
350 		args[parameterIndex - 1] = SQLite.StringEncoder.encode(bx);
351 	    } else {
352 		args[parameterIndex - 1] = x.toString();
353 	    }
354 	}
355 	blobs[parameterIndex - 1] = false;
356     }
357 
358     public void setObject(int parameterIndex, Object x) throws SQLException {
359 	if (parameterIndex < 1 || parameterIndex > args.length) {
360 	    throw new SQLException("bad parameter index");
361 	}
362 	if (x == null) {
363 	    args[parameterIndex - 1] = nullrepl ? "" : null;
364 	} else {
365 	    if (x instanceof byte[]) {
366 		byte[] bx = (byte[]) x;
367 		if (conn.db.is3()) {
368 		    args[parameterIndex - 1] =
369 			SQLite.StringEncoder.encodeX(bx);
370 		    blobs[parameterIndex - 1] = true;
371 		    return;
372 		}
373 		args[parameterIndex - 1] = SQLite.StringEncoder.encode(bx);
374 	    } else {
375 		args[parameterIndex - 1] = x.toString();
376 	    }
377 	}
378 	blobs[parameterIndex - 1] = false;
379     }
380 
381     public boolean execute() throws SQLException {
382 	return executeQuery(fixup2(sql), args, false) != null;
383     }
384 
385     public void addBatch() throws SQLException {
386 	if (batch == null) {
387 	    batch = new ArrayList<BatchArg>(args.length);
388 	}
389 	for (int i = 0; i < args.length; i++) {
390 	    batch.add(new BatchArg(args[i], blobs[i]));
391 	}
392     }
393 
394     public int[] executeBatch() throws SQLException {
395 	if (batch == null) {
396 	    return new int[0];
397 	}
398 	int[] ret = new int[batch.size() / args.length];
399 	for (int i = 0; i < ret.length; i++) {
400 	    ret[i] = EXECUTE_FAILED;
401 	}
402 	int errs = 0;
403 	int index = 0;
404 	for (int i = 0; i < ret.length; i++) {
405 	    for (int k = 0; k < args.length; k++) {
406 		BatchArg b = (BatchArg) batch.get(index++);
407 
408 		args[k] = b.arg;
409 		blobs[k] = b.blob;
410 	    }
411 	    try {
412 		ret[i] = executeUpdate();
413 	    } catch (SQLException e) {
414 		++errs;
415 	    }
416 	}
417 	if (errs > 0) {
418 	    throw new BatchUpdateException("batch failed", ret);
419 	}
420 	return ret;
421     }
422 
423     public void clearBatch() throws SQLException {
424 	if (batch != null) {
425 	    batch.clear();
426 	    batch = null;
427 	}
428     }
429 
430     public void close() throws SQLException {
431     	clearBatch();
432 	super.close();
433     }
434 
435     public void setCharacterStream(int parameterIndex,
436 				   java.io.Reader reader,
437 				   int length) throws SQLException {
438 	try {
439 	    char[] data = new char[length];
440 	    reader.read(data);
441 	    setString(parameterIndex, new String(data));
442 	} catch (java.io.IOException e) {
443 	    throw new SQLException("I/O failed");
444 	}
445     }
446 
447     public void setRef(int i, Ref x) throws SQLException {
448 	throw new SQLFeatureNotSupportedException();
449     }
450 
451     public void setBlob(int i, Blob x) throws SQLException {
452 	throw new SQLFeatureNotSupportedException();
453     }
454 
455     public void setClob(int i, Clob x) throws SQLException {
456 	throw new SQLFeatureNotSupportedException();
457     }
458 
459     public void setArray(int i, Array x) throws SQLException {
460 	throw new SQLFeatureNotSupportedException();
461     }
462 
463     public ResultSetMetaData getMetaData() throws SQLException {
464 	return rs.getMetaData();
465     }
466 
467     public void setDate(int parameterIndex, java.sql.Date x, Calendar cal)
468 	throws SQLException {
469 	setDate(parameterIndex, x);
470     }
471 
472     public void setTime(int parameterIndex, java.sql.Time x, Calendar cal)
473 	throws SQLException {
474 	setTime(parameterIndex, x);
475     }
476 
477     public void setTimestamp(int parameterIndex, java.sql.Timestamp x,
478 			     Calendar cal) throws SQLException {
479 	setTimestamp(parameterIndex, x);
480     }
481 
482     public void setNull(int parameterIndex, int sqlType, String typeName)
483 	throws SQLException {
484 	setNull(parameterIndex, sqlType);
485     }
486 
487     public ParameterMetaData getParameterMetaData() throws SQLException {
488 	throw new SQLException("not supported");
489     }
490 
491     public void registerOutputParameter(String parameterName, int sqlType)
492 	throws SQLException {
493 	throw new SQLException("not supported");
494     }
495 
496     public void registerOutputParameter(String parameterName, int sqlType,
497 					int scale)
498 	throws SQLException {
499 	throw new SQLException("not supported");
500     }
501 
502     public void registerOutputParameter(String parameterName, int sqlType,
503 					String typeName)
504 	throws SQLException {
505 	throw new SQLException("not supported");
506     }
507 
508     public java.net.URL getURL(int parameterIndex) throws SQLException {
509 	throw new SQLException("not supported");
510     }
511 
512     public void setURL(int parameterIndex, java.net.URL url)
513 	throws SQLException {
514 	throw new SQLException("not supported");
515     }
516 
517     public void setNull(String parameterName, int sqlType)
518 	throws SQLException {
519 	throw new SQLException("not supported");
520     }
521 
522     public void setBoolean(String parameterName, boolean val)
523 	throws SQLException {
524 	throw new SQLException("not supported");
525     }
526 
527     public void setByte(String parameterName, byte val)
528 	throws SQLException {
529 	throw new SQLException("not supported");
530     }
531 
532     public void setShort(String parameterName, short val)
533 	throws SQLException {
534 	throw new SQLException("not supported");
535     }
536 
537     public void setInt(String parameterName, int val)
538 	throws SQLException {
539 	throw new SQLException("not supported");
540     }
541 
542     public void setLong(String parameterName, long val)
543 	throws SQLException {
544 	throw new SQLException("not supported");
545     }
546 
547     public void setFloat(String parameterName, float val)
548 	throws SQLException {
549 	throw new SQLException("not supported");
550     }
551 
552     public void setDouble(String parameterName, double val)
553 	throws SQLException {
554 	throw new SQLException("not supported");
555     }
556 
557     public void setBigDecimal(String parameterName, BigDecimal val)
558 	throws SQLException {
559 	throw new SQLException("not supported");
560     }
561 
562     public void setString(String parameterName, String val)
563 	throws SQLException {
564 	throw new SQLException("not supported");
565     }
566 
567     public void setBytes(String parameterName, byte val[])
568 	throws SQLException {
569 	throw new SQLException("not supported");
570     }
571 
572     public void setDate(String parameterName, java.sql.Date val)
573 	throws SQLException {
574 	throw new SQLException("not supported");
575     }
576 
577     public void setTime(String parameterName, java.sql.Time val)
578 	throws SQLException {
579 	throw new SQLException("not supported");
580     }
581 
582     public void setTimestamp(String parameterName, java.sql.Timestamp val)
583 	throws SQLException {
584 	throw new SQLException("not supported");
585     }
586 
587     public void setAsciiStream(String parameterName,
588 			       java.io.InputStream s, int length)
589 	throws SQLException {
590 	throw new SQLException("not supported");
591     }
592 
593     public void setBinaryStream(String parameterName,
594 				java.io.InputStream s, int length)
595 	throws SQLException {
596 	throw new SQLException("not supported");
597     }
598 
599     public void setObject(String parameterName, Object val, int targetSqlType,
600 			  int scale)
601 	throws SQLException {
602 	throw new SQLException("not supported");
603     }
604 
605     public void setObject(String parameterName, Object val, int targetSqlType)
606 	throws SQLException {
607 	throw new SQLException("not supported");
608     }
609 
610     public void setObject(String parameterName, Object val)
611 	throws SQLException {
612 	throw new SQLException("not supported");
613     }
614 
615     public void setCharacterStream(String parameterName,
616 				   java.io.Reader r, int length)
617 	throws SQLException {
618 	throw new SQLException("not supported");
619     }
620 
621     public void setDate(String parameterName, java.sql.Date val,
622 			Calendar cal)
623 	throws SQLException {
624 	throw new SQLException("not supported");
625     }
626 
627     public void setTime(String parameterName, java.sql.Time val,
628 			Calendar cal)
629 	throws SQLException {
630 	throw new SQLException("not supported");
631     }
632 
633     public void setTimestamp(String parameterName, java.sql.Timestamp val,
634 			     Calendar cal)
635 	throws SQLException {
636 	throw new SQLException("not supported");
637     }
638 
639     public void setNull(String parameterName, int sqlType, String typeName)
640 	throws SQLException {
641 	throw new SQLException("not supported");
642     }
643 
644     public String getString(String parameterName) throws SQLException {
645 	throw new SQLException("not supported");
646     }
647 
648     public boolean getBoolean(String parameterName) throws SQLException {
649 	throw new SQLException("not supported");
650     }
651 
652     public byte getByte(String parameterName) throws SQLException {
653 	throw new SQLException("not supported");
654     }
655 
656     public short getShort(String parameterName) throws SQLException {
657 	throw new SQLException("not supported");
658     }
659 
660     public int getInt(String parameterName) throws SQLException {
661 	throw new SQLException("not supported");
662     }
663 
664     public long getLong(String parameterName) throws SQLException {
665 	throw new SQLException("not supported");
666     }
667 
668     public float getFloat(String parameterName) throws SQLException {
669 	throw new SQLException("not supported");
670     }
671 
672     public double getDouble(String parameterName) throws SQLException {
673 	throw new SQLException("not supported");
674     }
675 
676     public byte[] getBytes(String parameterName) throws SQLException {
677 	throw new SQLException("not supported");
678     }
679 
680     public java.sql.Date getDate(String parameterName) throws SQLException {
681 	throw new SQLException("not supported");
682     }
683 
684     public java.sql.Time getTime(String parameterName) throws SQLException {
685 	throw new SQLException("not supported");
686     }
687 
688     public java.sql.Timestamp getTimestamp(String parameterName)
689 	throws SQLException {
690 	throw new SQLException("not supported");
691     }
692 
693     public Object getObject(String parameterName) throws SQLException {
694 	throw new SQLException("not supported");
695     }
696 
697     public Object getObject(int parameterIndex) throws SQLException {
698 	throw new SQLException("not supported");
699     }
700 
701     public BigDecimal getBigDecimal(String parameterName) throws SQLException {
702 	throw new SQLException("not supported");
703     }
704 
705     public Object getObject(String parameterName, Map map)
706 	throws SQLException {
707 	throw new SQLException("not supported");
708     }
709 
710     public Object getObject(int parameterIndex, Map map)
711 	throws SQLException {
712 	throw new SQLException("not supported");
713     }
714 
715     public Ref getRef(int parameterIndex) throws SQLException {
716 	throw new SQLException("not supported");
717     }
718 
719     public Ref getRef(String parameterName) throws SQLException {
720 	throw new SQLException("not supported");
721     }
722 
723     public Blob getBlob(String parameterName) throws SQLException {
724 	throw new SQLException("not supported");
725     }
726 
727     public Blob getBlob(int parameterIndex) throws SQLException {
728 	throw new SQLException("not supported");
729     }
730 
731     public Clob getClob(String parameterName) throws SQLException {
732 	throw new SQLException("not supported");
733     }
734 
735     public Clob getClob(int parameterIndex) throws SQLException {
736 	throw new SQLException("not supported");
737     }
738 
739     public Array getArray(String parameterName) throws SQLException {
740 	throw new SQLException("not supported");
741     }
742 
743     public Array getArray(int parameterIndex) throws SQLException {
744 	throw new SQLException("not supported");
745     }
746 
747     public java.sql.Date getDate(String parameterName, Calendar cal)
748 	throws SQLException {
749 	throw new SQLException("not supported");
750     }
751 
752     public java.sql.Date getDate(int parameterIndex, Calendar cal)
753 	throws SQLException {
754 	throw new SQLException("not supported");
755     }
756 
757     public java.sql.Time getTime(String parameterName, Calendar cal)
758 	throws SQLException {
759 	throw new SQLException("not supported");
760     }
761 
762     public java.sql.Time getTime(int parameterIndex, Calendar cal)
763 	throws SQLException {
764 	throw new SQLException("not supported");
765     }
766 
767     public java.sql.Timestamp getTimestamp(String parameterName, Calendar cal)
768 	throws SQLException {
769 	throw new SQLException("not supported");
770     }
771 
772     public java.sql.Timestamp getTimestamp(int parameterIndex, Calendar cal)
773 	throws SQLException {
774 	throw new SQLException("not supported");
775     }
776 
777     public java.net.URL getURL(String parameterName) throws SQLException {
778 	throw new SQLException("not supported");
779     }
780 
781     public void setRowId(int parameterIndex, RowId x) throws SQLException {
782 	throw new SQLFeatureNotSupportedException();
783     }
784 
785     public void setRowId(String parameterName, RowId x) throws SQLException {
786 	throw new SQLFeatureNotSupportedException();
787     }
788 
789     public void setNString(int parameterIndex, String value)
790 	throws SQLException {
791 	throw new SQLFeatureNotSupportedException();
792     }
793 
794     public void setNString(String parameterName, String value)
795 	throws SQLException {
796 	throw new SQLFeatureNotSupportedException();
797     }
798 
799     public void setNCharacterStream(int parameterIndex, java.io.Reader x,
800 				    long len)
801 	throws SQLException {
802 	throw new SQLFeatureNotSupportedException();
803     }
804 
805     public void setNCharacterStream(String parameterName, java.io.Reader x,
806 				    long len)
807 	throws SQLException {
808 	throw new SQLFeatureNotSupportedException();
809     }
810 
811     public void setNClob(int parameterIndex, NClob value)
812 	throws SQLException {
813 	throw new SQLFeatureNotSupportedException();
814     }
815 
816     public void setNClob(String parameterName, NClob value)
817 	throws SQLException {
818 	throw new SQLFeatureNotSupportedException();
819     }
820 
821     public void setClob(int parameterIndex, java.io.Reader x, long len)
822 	throws SQLException {
823 	throw new SQLFeatureNotSupportedException();
824     }
825 
826     public void setClob(String parameterName, java.io.Reader x, long len)
827 	throws SQLException {
828 	throw new SQLFeatureNotSupportedException();
829     }
830 
831     public void setBlob(int parameterIndex, java.io.InputStream x, long len)
832 	throws SQLException {
833 	throw new SQLFeatureNotSupportedException();
834     }
835 
836     public void setBlob(String parameterName, java.io.InputStream x, long len)
837 	throws SQLException {
838 	throw new SQLFeatureNotSupportedException();
839     }
840 
841     public void setNClob(int parameterIndex, java.io.Reader x, long len)
842 	throws SQLException {
843 	throw new SQLFeatureNotSupportedException();
844     }
845 
846     public void setNClob(String parameterName, java.io.Reader x, long len)
847 	throws SQLException {
848 	throw new SQLFeatureNotSupportedException();
849     }
850 
851     public void setSQLXML(int parameterIndex, SQLXML xml)
852 	throws SQLException {
853 	throw new SQLFeatureNotSupportedException();
854     }
855 
856     public void setSQLXML(String parameterName, SQLXML xml)
857 	throws SQLException {
858 	throw new SQLFeatureNotSupportedException();
859     }
860 
861     public void setAsciiStream(int parameterIndex, java.io.InputStream x,
862 			       long len)
863 	throws SQLException {
864 	throw new SQLFeatureNotSupportedException();
865     }
866 
867     public void setAsciiStream(String parameterName, java.io.InputStream x,
868 			       long len)
869 	throws SQLException {
870 	throw new SQLFeatureNotSupportedException();
871     }
872 
873     public void setBinaryStream(int parameterIndex, java.io.InputStream x,
874 				long len)
875 	throws SQLException {
876 	throw new SQLFeatureNotSupportedException();
877     }
878 
879     public void setBinaryStream(String parameterName, java.io.InputStream x,
880 				long len)
881 	throws SQLException {
882 	throw new SQLFeatureNotSupportedException();
883     }
884 
885     public void setCharacterStream(int parameterIndex, java.io.Reader x,
886 				   long len)
887 	throws SQLException {
888 	throw new SQLFeatureNotSupportedException();
889     }
890 
891     public void setCharacterStream(String parameterName, java.io.Reader x,
892 				   long len)
893 	throws SQLException {
894 	throw new SQLFeatureNotSupportedException();
895     }
896 
897     public void setAsciiStream(int parameterIndex, java.io.InputStream x)
898 	throws SQLException {
899 	throw new SQLFeatureNotSupportedException();
900     }
901 
902     public void setAsciiStream(String parameterName, java.io.InputStream x)
903 	throws SQLException {
904 	throw new SQLFeatureNotSupportedException();
905     }
906 
907     public void setBinaryStream(int parameterIndex, java.io.InputStream x)
908 	throws SQLException {
909 	throw new SQLFeatureNotSupportedException();
910     }
911 
912     public void setBinaryStream(String parameterName, java.io.InputStream x)
913 	throws SQLException {
914 	throw new SQLFeatureNotSupportedException();
915     }
916 
917     public void setCharacterStream(int parameterIndex, java.io.Reader x)
918 	throws SQLException {
919 	throw new SQLFeatureNotSupportedException();
920     }
921 
922     public void setCharacterStream(String parameterName, java.io.Reader x)
923 	throws SQLException {
924 	throw new SQLFeatureNotSupportedException();
925     }
926 
927     public void setNCharacterStream(int parameterIndex, java.io.Reader x)
928 	throws SQLException {
929 	throw new SQLFeatureNotSupportedException();
930     }
931 
932     public void setNCharacterStream(String parameterName, java.io.Reader x)
933 	throws SQLException {
934 	throw new SQLFeatureNotSupportedException();
935     }
936 
937     public void setClob(int parameterIndex, java.io.Reader x)
938 	throws SQLException {
939 	throw new SQLFeatureNotSupportedException();
940     }
941 
942     public void setClob(String parameterName, java.io.Reader x)
943 	throws SQLException {
944 	throw new SQLFeatureNotSupportedException();
945     }
946 
947     public void setBlob(int parameterIndex, java.io.InputStream x)
948 	throws SQLException {
949 	throw new SQLFeatureNotSupportedException();
950     }
951 
952     public void setBlob(String parameterName, java.io.InputStream x)
953 	throws SQLException {
954 	throw new SQLFeatureNotSupportedException();
955     }
956 
957     public void setNClob(int parameterIndex, java.io.Reader x)
958 	throws SQLException {
959 	throw new SQLFeatureNotSupportedException();
960     }
961 
962     public void setNClob(String parameterName, java.io.Reader x)
963 	throws SQLException {
964 	throw new SQLFeatureNotSupportedException();
965     }
966 
967 }
968