Description:
I tried the following java code snippet with a MySQL installation. The parameter type for the preparedstatement is not returned.
Class.forName("com.mysql.jdbc.Driver");
Connection con1 = DriverManager.getConnection("jdbc:mysql://129.158.238.234:3306/demo", "root", "root");
PreparedStatement ps1 = con1.prepareStatement("update flight_info set flight_no=?,airline_id=?,destination=?,departure_date=?,departure_time=?;");
ParameterMetaData paramMetaData1 = (MysqlParameterMetadata)ps1.getParameterMetaData();
for (int i = 0; i < paramMetaData1.getParameterCount(); i++) {
System.out.println(paramMetaData1.getParameterType(i + 1) + ":" + paramMetaData1.getParameterTypeName(i + 1));
}
(I made sure such a table with the given columns are there in the database!)
The connector/J version I used is 5.1.5. This fails with
java.sql.SQLException: Parameter metadata not available for the given statement
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.MysqlParameterMetadata.checkAvailable(MysqlParameterMetadata.java:68)
at com.mysql.jdbc.MysqlParameterMetadata.getParameterType(MysqlParameterMetadata.java:117)
How to repeat:
This can be tried with a simple standalone as follows:
Class.forName("com.mysql.jdbc.Driver");
Connection con1 = DriverManager.getConnection("jdbc:mysql://129.158.238.234:3306/demo", "root", "root");
PreparedStatement ps1 = con1.prepareStatement("update flight_info set flight_no=?,airline_id=?,destination=?,departure_date=?,departure_time=?;");
ParameterMetaData paramMetaData1 = (MysqlParameterMetadata)ps1.getParameterMetaData();
for (int i = 0; i < paramMetaData1.getParameterCount(); i++) {
System.out.println(paramMetaData1.getParameterType(i + 1) + ":" + paramMetaData1.getParameterTypeName(i + 1));
}
Suggested fix:
I see that there's a class MysqlparameterMetaData in the jar but this doesn't seem to return parameter types.
Description: I tried the following java code snippet with a MySQL installation. The parameter type for the preparedstatement is not returned. Class.forName("com.mysql.jdbc.Driver"); Connection con1 = DriverManager.getConnection("jdbc:mysql://129.158.238.234:3306/demo", "root", "root"); PreparedStatement ps1 = con1.prepareStatement("update flight_info set flight_no=?,airline_id=?,destination=?,departure_date=?,departure_time=?;"); ParameterMetaData paramMetaData1 = (MysqlParameterMetadata)ps1.getParameterMetaData(); for (int i = 0; i < paramMetaData1.getParameterCount(); i++) { System.out.println(paramMetaData1.getParameterType(i + 1) + ":" + paramMetaData1.getParameterTypeName(i + 1)); } (I made sure such a table with the given columns are there in the database!) The connector/J version I used is 5.1.5. This fails with java.sql.SQLException: Parameter metadata not available for the given statement at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) at com.mysql.jdbc.MysqlParameterMetadata.checkAvailable(MysqlParameterMetadata.java:68) at com.mysql.jdbc.MysqlParameterMetadata.getParameterType(MysqlParameterMetadata.java:117) How to repeat: This can be tried with a simple standalone as follows: Class.forName("com.mysql.jdbc.Driver"); Connection con1 = DriverManager.getConnection("jdbc:mysql://129.158.238.234:3306/demo", "root", "root"); PreparedStatement ps1 = con1.prepareStatement("update flight_info set flight_no=?,airline_id=?,destination=?,departure_date=?,departure_time=?;"); ParameterMetaData paramMetaData1 = (MysqlParameterMetadata)ps1.getParameterMetaData(); for (int i = 0; i < paramMetaData1.getParameterCount(); i++) { System.out.println(paramMetaData1.getParameterType(i + 1) + ":" + paramMetaData1.getParameterTypeName(i + 1)); } Suggested fix: I see that there's a class MysqlparameterMetaData in the jar but this doesn't seem to return parameter types.