I have a method written in java to execute the SQL statment for INSERT,UPDATE and DELETE modes. This was working on WebSphere 6.1 and after upgrading to WebSphere 7.0 it stopped working.
Below is my code :
public void executeSQL() throws SQLException, ParseException, NamingException
{
// Get a Connection from the Connection Pool if the connection is closed
Connection dbCon = DriverUtilities.getConnectionFromContext(DriverUtilities.DIRECTPAY_DB);
// create a Statment object whose ResultSet is scroll sensitive and with Concurrent Updatable.
Statement stmt = dbCon.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
dbCon.setAutoCommit(true);
String strColumn = null;
String colName = null;
String colVal = null;
String colType = null;
String sql = null;
try {
if (isUpdate | isDelete) {
//ResultSet rs = stmt.executeQuery("select * from " + getTableName());
ResultSet rs = stmt.executeQuery("select * from " + getSqlFrom());
//Move the ResultSet to the Row Index
rs.absolute(iRowIndex + 1);
Enumeration enum1 = ColNames.elements();
int i = 1;
// Update Block
if (isUpdate) {
while (enum1.hasMoreElements()) {
//column name for update
strColumn = (String) enum1.nextElement();
// value from the screen
colVal = (String) requestParams.get("post" + strColumn);
//get column type
colType = colTypeHash.get(strColumn).toString();
//if colvalue from screen not null then test for the Column type
if ((colVal == null) || (colVal.equalsIgnoreCase("null"))){
rs.updateNull(i);
} else {
if ((colType.equalsIgnoreCase("INT")) || (colType.equalsIgnoreCase("SMALLINT"))) {
if (colVal.trim().length() > 0)
rs.updateInt(i, Integer.parseInt(colVal));
} else if ((colType.equalsIgnoreCase("DATETIME"))) {
if (colVal.trim().length() > 0)
rs.updateTimestamp(i, toTimestamp(colVal));
} else if ((colType.equalsIgnoreCase("CHAR"))) {
//if (colVal.trim().length() > 0)
rs.updateString(i, colVal);
} else if ((colType.equalsIgnoreCase("NVARCHAR"))) {
//if (colVal.trim().length() > 0)
rs.updateString(i, colVal);
} else if ((colType.equalsIgnoreCase("VARCHAR"))) {
//if (colVal.trim().length() > 0)
rs.updateString(i, colVal);
} else if ((colType.equalsIgnoreCase("DECIMAL"))) {
if (colVal.trim().length() > 0)
rs.updateString(i, colVal);
} else if ((colType.equalsIgnoreCase("FLOAT"))) {
if (colVal.trim().length() > 0)
rs.updateDouble(i, Double.parseDouble(colVal));
} else if ((colType.equalsIgnoreCase("BIT"))) {
if (colVal.trim().length() > 0)
rs.updateByte(i, Byte.parseByte(colVal));
//rs.updateDouble(i, Double.parseDouble(colVal));
} else if ((colType.equalsIgnoreCase("int identity"))) {
// ignore it
} else {
System.out.println("WARNING DATATYPE UNSUPPORTED in ADMIN: " + colType);
}
}
i++;
}
//Setting Identity Insert ON.
stmt.executeUpdate("SET IDENTITY_INSERT "+getTableName()+" ON");
rs.updateRow();
}
//delete block
if (isDelete) {
rs.deleteRow();
}
rs.close();
}
//Insert Block
if (isInsert) {
//Setting Identity Insert ON.
stmt.executeUpdate("SET IDENTITY_INSERT "+getTableName()+" ON");
// get the SQL statement for Insert
sql = getSQL();
int resultFlag = stmt.executeUpdate(sql);
}
//Setting Identity Insert OFF.
stmt.executeUpdate("SET IDENTITY_INSERT "+getTableName()+" OFF");
stmt.close();
dbCon.close();
} catch (SQLException e) {
System.out.println("executeSQL failed: " + sql + ", " + StackTraces.getStackTrace(e));
try {
stmt.close();
} catch(Exception ee){
}
try {
dbCon.close();
} catch(Exception ee){
}
throw (e);
} catch (java.lang.NumberFormatException e) {
System.out.println("executeSQL failed: " + sql + ", " + StackTraces.getStackTrace(e));
try {
stmt.close();
} catch(Exception ee){
}
try {
dbCon.close();
} catch(Exception ee){
}
throw (e);
}
}
Below is my Error stack trace :
[9/27/12 16:28:06:497 GMT-06:00] 0000002a SystemOut O ---------------- sql = SELECT * FROM PRODUCT ------------------------
[9/27/12 16:28:06:664 GMT-06:00] 0000002a SystemOut O ERROR:
[9/27/12 16:28:06:685 GMT-06:00] 0000002a WSRdbManagedC W DSRA1300E: Feature is not implemented: javax.sql.PooledConnection.addStatementEventListener
[9/27/12 16:28:37:378 GMT-06:00] 0000002e SystemOut O executeSQL failed: null, com.microsoft.sqlserver.jdbc.SQLServerException: Cannot find the object "PRODUCT" because it does not exist or you do not have permissions.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1493)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:775)
at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:676)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeUpdate(SQLServerStatement.java:633)
at com.ibm.ws.rsadapter.jdbc.WSJdbcStatement.pmiExecuteUpdate(WSJdbcStatement.java:1693)
at com.ibm.ws.rsadapter.jdbc.WSJdbcStatement.executeUpdate(WSJdbcStatement.java:1041)
at com.bcbskc.bbb.directpay.admin.AdminTableBean.executeSQL(AdminTableBean.java:313)
at com.bcbskc.bbb.directpay.admin.AdminTableBean.manipulateTable(AdminTableBean.java:132)
at com.bcbskc.bbb.directpay.actions.ManipulateAdminTableAction.manipulateTable(ManipulateAdminTableAction.java:104)
at com.bcbskc.bbb.directpay.actions.ManipulateAdminTableAction.execute(ManipulateAdminTableAction.java:46)
at com.bcbskc.bbb.common.uiframework.Controller.doPost(Controller.java:56)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131)
at com.bcbskc.bbb.common.security.AuthbeanFilter.doFilter(AuthbeanFilter.java:88)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:934)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:179)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:864)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604)
[9/27/12 16:28:37:379 GMT-06:00] 0000002e SystemOut O ManipulateAdminTableAction failed: There was an error updating the admin table. Please check the data for errors and format. com.microsoft.sqlserver.jdbc.SQLServerException: Cannot find the object "PRODUCT" because it does not exist or you do not have permissions.com.microsoft.sqlserver.jdbc.SQLServerException: Cannot find the object "PRODUCT" because it does not exist or you do not have permissions.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1493)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:775)
at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:676)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeUpdate(SQLServerStatement.java:633)
at com.ibm.ws.rsadapter.jdbc.WSJdbcStatement.pmiExecuteUpdate(WSJdbcStatement.java:1693)
at com.ibm.ws.rsadapter.jdbc.WSJdbcStatement.executeUpdate(WSJdbcStatement.java:1041)
at com.bcbskc.bbb.directpay.admin.AdminTableBean.executeSQL(AdminTableBean.java:313)
at com.bcbskc.bbb.directpay.admin.AdminTableBean.manipulateTable(AdminTableBean.java:132)
at com.bcbskc.bbb.directpay.actions.ManipulateAdminTableAction.manipulateTable(ManipulateAdminTableAction.java:104)
at com.bcbskc.bbb.directpay.actions.ManipulateAdminTableAction.execute(ManipulateAdminTableAction.java:46)
at com.bcbskc.bbb.common.uiframework.Controller.doPost(Controller.java:56)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:131)
at com.bcbskc.bbb.common.security.AuthbeanFilter.doFilter(AuthbeanFilter.java:88)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:934)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:179)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:864)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604)
The issue is solved with the help of answere from Jon Skeet to my other post. Follow this https://stackoverflow.com/a/12733027/1615051