0

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

前もって感謝します

4

1 に答える 1

0

完全な結果を取得するgetParameterClassName(int param)には、代わりにgetParameterTypeName

参照: http://docs.oracle.com/javase/7/docs/api/java/sql/ParameterMetaData.html#getParameterClassName%28int%29

お役に立てれば

于 2013-01-30T07:19:41.443 に答える