|
Archives of the TeradataForumMessage Posted: Thu, 16 Nov 2006 @ 21:46:06 GMT
I am having difficulties with the PerparedStatement.executeBatch(). When I call it, it's throwing (full trace below): java.lang.ClassCastException: com.ncr.teradata.jdbc_4.statemachine.PreparedIndicProtocol Is this broken? I read Bob Hahn's post (9/2005) www.teradataforum.com/teradata/20050913_160911.htm He says in a subsequent post on the thread, "Prepared statement batch updates require Teradata V2R6 and JDBC 3.2." Well, I have both of those, so I'm wondering what's wrong. Thanks, - Dan Versions: Teradata Database Release V2R.06.01.00.13, Teradata Database Version 06.01.00.08b Teradata Driver for the JDBC Interface 3.3.0.2 Java version "1.5.0_08", build b03 I'm class-pathing: 03/14/2006 12:26 PM 1,686 tdgssconfig.jar 04/19/2006 05:05 PM 114,908 tdgssjava.jar 08/17/2006 11:13 AM 1,260,300 terajdbc4.jar The core code: ps = conADW.prepareStatement( "insert " + _databaseName_ADW_work + ".CustomersToReport values ( ?, ?, ?);" ); ps.setInt(1, 999); ps.setInt(2, 777); ps.setInt(3, 0); ps.addBatch(); ps.executeBatch(); The full stack trace: java.lang.ClassCastException: com.ncr.teradata.jdbc_4.statemachine.PreparedIndicProtocol at com.ncr.teradata.jdbc_4.statemachine.PreparedBatchStatementSendState.ini tSubclassParcels(PreparedBatchStatementSendState.java:95) at com.ncr.teradata.jdbc_4.statemachine.StatementSendState.action(Statement SendState.java:74) at com.ncr.teradata.jdbc_4.statemachine.PreparedBatchStatementSendState.act ion(PreparedBatchStatementSendState.java:54) at com.ncr.teradata.jdbc_4.statemachine.StatementController.runBody(Stateme ntController.java:99) at com.ncr.teradata.jdbc_4.statemachine.PreparedBatchStatementController.ru n(PreparedBatchStatementController.java:58) at com.ncr.teradata.jdbc_4.Statement.executeStatement(Statement.java:253) at com.ncr.teradata.jdbc_4.PreparedStatement.executeBatch(PreparedStatement .java:112) at com.ncr.teradata.jdbc_3.ifjdbc_4.TeraLocalPreparedStatement.executeBatch (TeraLocalPreparedStatement.java:320) at com.wf.fiu.mt2_poc.MT2_POC.simple(MT2_POC.java:277) at com.wf.fiu.mt2_poc.MT2_POC.main(MT2_POC.java:296) The full code: import java.util.*; import java.sql.*; Public class MyClass { static final protected String _driverClassName_ADW = "com.ncr.teradata.TeraDriver"; static final protected String _connectionString_ADW = "jdbc:teradata://myhost.com/DBS_PORT=1025/DATABASE=XXX,LOB_SUPPORT=OFF"; static final protected String _username_ADW = "..."; static final protected String _password_ADW = "..."; static final protected String _databaseName_ADW_work = "YYY"; public static void main(String[] args) { Connection conADW = null; PreparedStatement ps = null; ResultSet rs = null; Statement s = null; try { System.out.println("Starting..."); Class.forName(_driverClassName_ADW); conADW = DriverManager.getConnection( _connectionString_ADW,_username_ADW,_password_ADW); System.out.println("Checking for existing work table."); ps = conADW.prepareStatement("select 1 from dbc.Tables " + "where DatabaseName = ? and TableName = ?"); ps.setString(1,_databaseName_ADW_work); ps.setString(2,"CustomersToReport"); rs = ps.executeQuery(); boolean haveTable = rs.next(); rs.close(); rs = null; ps.close(); ps = null; if (haveTable) { System.out.println("Dropping existing work table."); s = conADW.createStatement(); s.executeUpdate("drop table " + _databaseName_ADW_work + ".CustomersToReport;"); s.close(); s = null; conADW.commit(); } else System.out.println("No existing work table."); System.out.println("Creating work table."); s = conADW.createStatement(); s.executeUpdate( "create table " + _databaseName_ADW_work + ".CustomersToReport (" + " cust_co_nbr integer not null," + " cust_nbr integer not null," + " cust_tie_brkr integer not null" + " )" + " unique primary index (cust_co_nbr, cust_nbr, cust_tie_brkr)" + ";" ); s.close(); s = null; conADW.commit(); System.out.println("Building batch."); ps = conADW.prepareStatement( "insert " + _databaseName_ADW_work + ".CustomersToReport values ( ?, ?, ?);"); ps.setInt(1, 999); ps.setInt(2, 123); ps.setInt(3, 0); ps.addBatch(); ps.setInt(1, 999); ps.setInt(2, 777); ps.setInt(3, 0); ps.addBatch(); System.out.println("Executing batch."); ps.executeBatch(); System.out.println("Batch executed."); ps.clearBatch(); System.out.println("Done."); } catch (Exception x) { x.printStackTrace(); } finally { try { if (rs != null) rs.close(); } catch (Exception x) {} try { if (s != null) s.close(); } catch (Exception x) {} try { if (ps != null) ps.close(); } catch (Exception x) {} try { if (conADW != null) conADW.close(); } catch (Exception x) {} } } }
| ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
Copyright 2016 - All Rights Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||
Last Modified: 15 Jun 2023 | ||||||||||||||||||||||||||||||||||||||||||||||||