我必须从 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;
}
这是输出: -
param SQL type name = VARCHAR
param SQL类型name1 = VARCHAR
但我期待这个输出: -
param SQL type name = INTEGER
param SQL类型name1 = VARCHAR
提前致谢
答案 0 :(得分:0)
要获得完整结果,请使用getParameterClassName(int param)
代替getParameterTypeName
希望这有帮助