You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by bd...@apache.org on 2006/09/27 18:09:36 UTC
svn commit: r450491 - in
/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl:
ConnectionImpl.java Statement.java
Author: bdaniel
Date: Wed Sep 27 09:09:35 2006
New Revision: 450491
URL: http://svn.apache.org/viewvc?view=rev&rev=450491
Log:
TUSCANY-758 Support databases that don't support generated keys
Modified:
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ConnectionImpl.java
incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ConnectionImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ConnectionImpl.java?view=diff&rev=450491&r1=450490&r2=450491
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ConnectionImpl.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ConnectionImpl.java Wed Sep 27 09:09:35 2006
@@ -20,6 +20,7 @@
import java.sql.CallableStatement;
import java.sql.Connection;
+import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -34,13 +35,20 @@
private Connection connection;
private boolean managingTransaction = true;
+ private final boolean supportsGeneratedKeys;
public ConnectionImpl(Connection connection) {
this.connection = connection;
-
+
try {
+ DatabaseMetaData dbmd = connection.getMetaData();
+ // Derby says they don't support generated keys, but they do for our purposes.
+ if ( dbmd.supportsGetGeneratedKeys() || dbmd.getDatabaseProductName().contains("Derby") )
+ this.supportsGeneratedKeys = true;
+ else
+ this.supportsGeneratedKeys = false;
if (connection.getAutoCommit())
- throw new RuntimeException("AutoCommit must be off!");
+ throw new RuntimeException("AutoCommit must be off");
} catch (SQLException e) {
throw new RuntimeException(e);
}
@@ -77,11 +85,16 @@
}
}
- public PreparedStatement prepareStatement(String queryString) throws SQLException {
- if(this.logger.isDebugEnabled())
- this.logger.debug("Preparing Statement: " + queryString);
-
- return connection.prepareStatement(queryString, java.sql.Statement.RETURN_GENERATED_KEYS);
+ public PreparedStatement prepareStatement(String queryString)
+ throws SQLException {
+ if (this.logger.isDebugEnabled())
+ this.logger.debug("Preparing Statement: " + queryString);
+
+ if (this.supportsGeneratedKeys)
+ return connection.prepareStatement(queryString,
+ java.sql.Statement.RETURN_GENERATED_KEYS);
+ else
+ return connection.prepareStatement(queryString);
}
public PreparedStatement preparePagedStatement(String queryString) throws SQLException {
@@ -98,5 +111,9 @@
public CallableStatement prepareCall(String queryString) throws SQLException {
return connection.prepareCall(queryString);
+ }
+
+ public boolean supportsGeneratedKeys() {
+ return this.supportsGeneratedKeys;
}
}
Modified: incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java?view=diff&rev=450491&r1=450490&r2=450491
==============================================================================
--- incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java (original)
+++ incubator/tuscany/java/das/rdb/src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java Wed Sep 27 09:09:35 2006
@@ -44,7 +44,7 @@
private boolean isPaging = false;
public Statement(String sqlString) {
- this.queryString = sqlString; //new QueryString(sqlString);
+ this.queryString = sqlString;
}
public List executeQuery(Parameters parameters) throws SQLException {
@@ -152,7 +152,7 @@
try {
ParameterMetaData pmd = ps.getParameterMetaData();
ps.setNull(param.getIndex(), pmd.getParameterType(param.getIndex()));
- } catch (Exception ex) {
+ } catch (SQLException ex) {
ps.setNull(param.getIndex(), SDODataTypeHelper.sqlTypeFor(null));
}
} else
@@ -196,9 +196,11 @@
public Integer getGeneratedKey() throws SQLException {
- ResultSet rs = getPreparedStatement().getGeneratedKeys();
- if (rs.next())
- return new Integer(rs.getInt(1));
+ if ( getConnection().supportsGeneratedKeys() ) {
+ ResultSet rs = getPreparedStatement().getGeneratedKeys();
+ if (rs.next())
+ return new Integer(rs.getInt(1));
+ }
return null;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org