001 // Copyright 2004, 2005 The Apache Software Foundation 002 // 003 // Licensed under the Apache License, Version 2.0 (the "License"); 004 // you may not use this file except in compliance with the License. 005 // You may obtain a copy of the License at 006 // 007 // http://www.apache.org/licenses/LICENSE-2.0 008 // 009 // Unless required by applicable law or agreed to in writing, software 010 // distributed under the License is distributed on an "AS IS" BASIS, 011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 012 // See the License for the specific language governing permissions and 013 // limitations under the License. 014 015 package org.apache.tapestry.contrib.jdbc; 016 017 import java.sql.Connection; 018 import java.sql.ResultSet; 019 import java.sql.SQLException; 020 import java.sql.Statement; 021 022 import org.apache.commons.logging.Log; 023 import org.apache.commons.logging.LogFactory; 024 025 /** 026 * A wrapper around {@link Statement}. 027 * 028 * @author Howard Lewis Ship 029 * 030 **/ 031 032 public class SimpleStatement implements IStatement 033 { 034 private static final Log LOG = LogFactory.getLog(SimpleStatement.class); 035 036 private String _sql; 037 private Statement _statement; 038 039 public SimpleStatement(String SQL, Connection connection) throws SQLException 040 { 041 _sql = SQL; 042 _statement = connection.createStatement(); 043 } 044 045 public SimpleStatement(String SQL, Connection connection, int resultSetType, int resultSetConcurrency) 046 throws SQLException 047 { 048 _sql = SQL; 049 _statement = connection.createStatement(resultSetType, resultSetConcurrency); 050 } 051 052 /** 053 * Returns the SQL associated with this statement. 054 * 055 **/ 056 057 public String getSQL() 058 { 059 return _sql; 060 } 061 062 /** 063 * Returns the underlying {@link Statement}. 064 * 065 **/ 066 067 public Statement getStatement() 068 { 069 return _statement; 070 } 071 072 /** 073 * Closes the underlying statement, and nulls the reference to it. 074 * 075 **/ 076 077 public void close() throws SQLException 078 { 079 _statement.close(); 080 081 _statement = null; 082 _sql = null; 083 } 084 085 /** 086 * Executes the statement as a query, returning a {@link ResultSet}. 087 * 088 **/ 089 090 public ResultSet executeQuery() throws SQLException 091 { 092 if (LOG.isDebugEnabled()) 093 LOG.debug("Executing query: " + this); 094 095 return _statement.executeQuery(_sql); 096 } 097 098 /** 099 * Executes the statement as an update, returning the number of rows 100 * affected. 101 * 102 **/ 103 104 public int executeUpdate() throws SQLException 105 { 106 if (LOG.isDebugEnabled()) 107 LOG.debug("Executing update: " + this); 108 109 return _statement.executeUpdate(_sql); 110 } 111 112 public String toString() 113 { 114 StringBuffer buffer; 115 116 buffer = new StringBuffer("SimpleStatement@"); 117 buffer.append(Integer.toHexString(hashCode())); 118 119 buffer.append("[SQL=<\n"); 120 buffer.append(_sql); 121 buffer.append("\n>]"); 122 123 return buffer.toString(); 124 } 125 126 }