001: package org.mandarax.jdbc.client;
002:
003: /*
004: * Copyright (C) 1999-2004 <a href="mailto:mandarax@jbdietrich.com">Jens Dietrich</a>
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2 of the License, or (at your option) any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
019: */
020:
021: import java.sql.*;
022:
023: import org.mandarax.jdbc.*;
024: import org.mandarax.jdbc.rpc.*;
025:
026: /**
027: * Statement implementation.
028: * @author <A HREF="mailto:mandarax@jbdietrich.com">Jens Dietrich</A>
029: * @version 3.3.2 <29 December 2004>
030: * @since 3.0
031: */
032: class StatementImpl extends AbstractStatementImpl implements
033: ClientObject {
034: // the connection used
035: protected Connection connection = null;
036: // the transport used
037: protected Transport transport = null;
038: // the id used to identify the associated server object
039: protected String id = null;
040: // this is the number of rows fetched per request (buffer size)
041: protected int fetchSize = 10;
042:
043: /**
044: * Constructor.
045: * @param transport the transport used
046: * @param connection the connection used
047: */
048: StatementImpl(Connection connection, Transport transport) {
049: super (connection);
050: this .transport = transport;
051: }
052:
053: /**
054: * Executes the given SQL statement, which returns a single ResultSet object.
055: * @param sql a query
056: * @return a result set
057: */
058: public ResultSet executeQuery(String sql) throws SQLException {
059: Call call = new Call(id, "Statement_executeQuery", sql);
060: return QueryHelper.executeQuery(transport, call, fetchSize,
061: this );
062: }
063:
064: /**
065: * Executes the given SQL statement, which may return multiple results.
066: */
067: public boolean execute() throws SQLException {
068: Call call = new Call(id, "Statement_execute");
069: transport.perform(call);
070: return true;
071: }
072:
073: /**
074: * Retrieves the current result as a ResultSet object.
075: * This method should be called only once per result.
076: */
077: public java.sql.ResultSet getResultSet() throws SQLException {
078: Call call = new Call(id, "Statement_getResultSet");
079: return QueryHelper.executeQuery(transport, call, fetchSize,
080: this );
081: }
082:
083: /**
084: * Set the id.
085: * @param id an id
086: */
087: public void setId(String id) {
088: this .id = id;
089: }
090:
091: /**
092: * Get the id.
093: * @return an id
094: */
095: public String getId() {
096: return id;
097: }
098:
099: /**
100: * Get the fetch size. This is the number of rows fetched per request (buffer size).
101: * @return a number
102: */
103: public int getFetchSize() {
104: return fetchSize;
105: }
106:
107: /**
108: * Set the fetch size. This is the number of rows fetched per request (buffer size).
109: * @param fetchSize the new fetch size
110: */
111: public void setFetchSize(int fetchSize) {
112: if (fetchSize < 1)
113: throw new IllegalArgumentException(
114: "The fetch size must be >= 1!");
115: this .fetchSize = fetchSize;
116: }
117:
118: /**
119: * Close the statement.
120: * @throws java.sql.SQLException
121: */
122: public void close() throws SQLException {
123: transport.perform(new Call(id, "Close"));
124: }
125:
126: /**
127: * Set the object on a certain index.
128: * @param parameterIndex the index
129: * @param x the object
130: */
131: public void setObject(int parameterIndex, Object x)
132: throws SQLException {
133: throw new UnsupportedFeatureException(
134: "setObject is not supported by simple statements");
135: }
136: }
|