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型名= VARCHAR
param SQL型名1= VARCHAR
しかし、私はこの出力を期待しています:-
param SQL型名= INTEGER
param SQL型名1= VARCHAR
前もって感謝します