我必须从MySQL数据库中的准备好的语句中获取参数名称和参数数据类型。所以为此我使用了ParameterMetaData类。但现在我得到了错误的数据类型。这仅给出“VARCHAR”数据类型。当我在互联网上搜索这个查询时,我发现
“返回参数类型。如果数据类型未知,则返回 java.sql.Types.VARCHAR”。
现在我应该怎么做才能获得正确的数据类型。如果可能,请帮助我。
这是我的代码:-
public class Main {
public static void main(String[] args) throws Exception {
Connection conn = getMySqlConnection();
String query = "select * from survey where id > ? and name = ?";
PreparedStatement pstmt = conn.prepareStatement(query);
ParameterMetaData paramMetaData = pstmt.getParameterMetaData();
if (paramMetaData == null) {
System.out.println("db vendor does NOT support ParameterMetaData");
} else {
System.out.println("db vendor supports ParameterMetaData");
String paramTypeName = paramMetaData.getParameterTypeName(1);
String paramTypeName1 = paramMetaData.getParameterTypeName(2);
System.out.println("param SQL type name=" + paramTypeName);
System.out.println("param SQL type name1=" + paramTypeName1);
}
pstmt.close();
conn.close();
}
public static Connection getMySqlConnection() throws Exception {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test?generateSimpleParameterMetadata=true";
String username = "root";
String password = "";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}
这是给出输出:-
参数 SQL 类型名称= VARCHAR
参数 SQL 类型名称 1= VARCHAR
但我期待这个输出: -
参数 SQL 类型名称 = INTEGER
参数 SQL 类型名称 1= VARCHAR
提前致谢