HikariCP version: 2.7.1
JDK version : 1.8.0_111
Database : MSSQL
Driver version : 6.2.2
I`d like to use TVP table valued params
`SQLServerDataTable dt = new SQLServerDataTable();
dt.addColumnMetadata("Field1" , Types.INTEGER);
dt.addColumnMetadata("Field2" , Types.INTEGER);
dt.addRow(1,1);
SQLServerPreparedStatement stmt = (SQLServerPreparedStatement) getConnection().prepareStatement(sql);
stmt.setStructured(1, "dbo.CustomTPV", dt);
stmt.execute();
`
But actually i got exception
java.lang.ClassCastException: com.zaxxer.hikari.pool.HikariProxyPreparedStatement cannot be cast to com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement
I assume you figured it out... unwrap().
For those having the same issue, as state by @brettwooldridge you can use unwrap:
SQLServerPreparedStatement sqlServerStatement = preparedStatement.unwrap(SQLServerPreparedStatement.class)
@brettwooldridge / @laduguer , can you please provide full example? I tried the below, but couldn't get it to work
try (Connection conn = hkds.getConnection();
//HikariProxyCallableStatement stmt3 = (HikariProxyCallableStatement) conn.prepareCall(PrepStmt)
//SQLServerCallableStatement sqlServerStatement = PrepStmt.
// preparedStatement.unwrap(SQLServerPreparedStatement.class)
SQLServerCallableStatement stmt3 = (SQLServerCallableStatement) conn.prepareCall(PrepStmt);
//HikariProxyCallableStatement sss = (HikariProxyCallableStatement) stmt3.unwrap(SQLServerCallableStatement.class);
) {
stmt3.registerOutParameter(1,Types.INTEGER);
stmt3.setObject(2,(SQLServerDataTable) parameters[0].getValue());
//stmt3.setObject("dbo.Integers",(SQLServerDataTable) parameters[0].getValue(),2);
//stmt3.setStructured(2,"dbo.Integers",(SQLServerDataTable) parameters[0].getValue());
stmt3.setInt(3,Integer.parseInt(parameters[1].getValue().toString()));
stmt3.registerOutParameter(4,Types.INTEGER);
ResultSet rs1 = stmt3.executeQuery();
}
Forgive my ignorance, I am a DB developer, but learning to work around Java/Jdbc just little bit ago.
Environment:
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>8.4.0.jre8</version>
</dependency>
E1 : Formatted the code block, added versions
Most helpful comment
I assume you figured it out... unwrap().