![]() |
|
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 | ||||||||||||||||||||||||||||||||||||||||||||||||