Examples of ParameterMetaData


Examples of java.sql.ParameterMetaData

   */
  private void writeSQLDARD(DRDAStatement stmt, boolean rtnOutput, SQLException e) throws DRDAProtocolException, SQLException
  {
    PreparedStatement ps = stmt.getPreparedStatement();
    ResultSetMetaData rsmeta = ps.getMetaData();
    ParameterMetaData pmeta = stmt.getParameterMetaData();
    int numElems = 0;
    if (e == null || e instanceof SQLWarning)
    {
      if (rtnOutput && (rsmeta != null))
        numElems = rsmeta.getColumnCount();
      else if ((! rtnOutput) && (pmeta != null))
        numElems = pmeta.getParameterCount();
    }

    writer.createDssObject();

    // all went well we will just write a null SQLCA
View Full Code Here

Examples of java.sql.ParameterMetaData

    throws DRDAProtocolException, SQLException
  {

    ResultSet rs = null;
    ResultSetMetaData rsmeta = null;
    ParameterMetaData pmeta = null;
    if (!stmt.needsToSendParamData)
      rs = stmt.getResultSet();
    if (rs == null)    // this is a CallableStatement, use parameter meta data
      pmeta = stmt.getParameterMetaData();
    else
      rsmeta = rs.getMetaData();

      int  numCols = (rsmeta != null ? rsmeta.getColumnCount() : pmeta.getParameterCount());
    int numGroups = 1;
    int colStart = 1;
    int colEnd = numCols;
    int blksize = stmt.getBlksize() > 0 ? stmt.getBlksize() : CodePoint.QRYBLKSZ_MAX;
View Full Code Here

Examples of java.sql.ParameterMetaData

        PreparedStatementSupport(PreparedStatement statement, int[] properties) {
            this.statement = statement;
            this.properties = properties;
            types = new int[properties.length];
            try {
                ParameterMetaData meta = statement.getParameterMetaData();
                for(int i = 0; i < types.length; i ++) {
                    if(properties[i]!= 0) {
                        types[i]= meta.getParameterType(properties[i]);
                    }
                }
            }
            catch(SQLException e) {
                throw new IllegalArgumentException(e);
View Full Code Here

Examples of java.sql.ParameterMetaData

        PreparedStatementSupport(PreparedStatement statement, int[] properties) {
            this.statement = statement;
            this.properties = properties;
            types = new int[properties.length];
            try {
                ParameterMetaData meta = statement.getParameterMetaData();
                for(int i = 0; i < types.length; i ++) {
                    if(properties[i]!= 0) {
                        types[i]= meta.getParameterType(properties[i]);
                    }
                }
            }
            catch(SQLException e) {
                throw new IllegalArgumentException(e);
View Full Code Here

Examples of java.sql.ParameterMetaData

        if (params == null) {
            return;
        }
       
        ParameterMetaData pmd = null;
        if (!pmdKnownBroken) {
            pmd = stmt.getParameterMetaData();
            if (pmd.getParameterCount() < params.length) {
                throw new SQLException("Too many parameters: expected "
                        + pmd.getParameterCount() + ", was given " + params.length);
            }
        }
        for (int i = 0; i < params.length; i++) {
            if (params[i] != null) {
                stmt.setObject(i + 1, params[i]);
            } else {
                // VARCHAR works with many drivers regardless
                // of the actual column type.  Oddly, NULL and
                // OTHER don't work with Oracle's drivers.
                int sqlType = Types.VARCHAR;
                if (!pmdKnownBroken) {
                    try {
                        sqlType = pmd.getParameterType(i + 1);
                    } catch (SQLException e) {
                        pmdKnownBroken = true;
                    }
                }
                stmt.setNull(i + 1, sqlType);
View Full Code Here

Examples of java.sql.ParameterMetaData

    PreparedStatement ps = conn.prepareStatement("insert into t1 values(?,+?,-?,?)");
    ps.setInt(1,1);
    ps.setInt(2,1);
    ps.setDouble(3,-1.1);
    ps.setString(4,"abc");
    ParameterMetaData pmd = ps.getParameterMetaData();
    System.out.println("? parameter type is " + pmd.getParameterTypeName(1));
     System.out.println("unary +? parameter type is " + pmd.getParameterTypeName(2));
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(3));
    ps.executeUpdate();
    ps.setInt(1,-1);
    ps.setInt(2,-1);
    ps.setDouble(3,1.0);
    ps.setString(4,"def");
    ps.executeUpdate();

    System.out.println("select * from t1 where -? in (select c21 from t2)");
    ps = conn.prepareStatement("select * from t1 where -? in (select c21 from t2)");
    ps.setInt(1,1);
    pmd = ps.getParameterMetaData();
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
    dumpRS(ps.executeQuery());

    System.out.println("select * from t1 where c11 = -? and c12 = +? and c13 = ?");
    ps = conn.prepareStatement("select * from t1 where c11 = -? and c12 = +? and c13 = ?");
    ps.setInt(1,-1);
    ps.setInt(2,1);
    ps.setDouble(3,1.1);
    pmd = ps.getParameterMetaData();
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
     System.out.println("unary +? parameter type is " + pmd.getParameterTypeName(2));
    System.out.println("? parameter type is " + pmd.getParameterTypeName(3));
    dumpRS(ps.executeQuery());
    ps.setShort(1,(short) 1);
    ps.setInt(2,-1);
    ps.setInt(3,-1);
    dumpRS(ps.executeQuery());

    System.out.println("select * from t1 where -? = ABS_FUNCT(+?)");
    s.execute("CREATE FUNCTION ABS_FUNCT(P1 INT) RETURNS INT CALLED ON NULL INPUT EXTERNAL NAME 'java.lang.Math.abs' LANGUAGE JAVA PARAMETER STYLE JAVA");
    ps = conn.prepareStatement("select * from t1 where -? = abs_funct(+?)");
    ps.setInt(1,-1);
    ps.setInt(2,1);
    pmd = ps.getParameterMetaData();
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
    System.out.println("unary +? parameter type is " + pmd.getParameterTypeName(2));
    dumpRS(ps.executeQuery());

    System.out.println("select * from t1 where -? = max_cni(-5,-1)");
    s.execute("CREATE FUNCTION MAX_CNI(P1 INT, P2 INT) RETURNS INT CALLED ON NULL INPUT EXTERNAL NAME 'java.lang.Math.max' LANGUAGE JAVA PARAMETER STYLE JAVA");
    ps = conn.prepareStatement("select * from t1 where -? = max_cni(-5,-1)");
    ps.setInt(1,1);
    pmd = ps.getParameterMetaData();
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
    dumpRS(ps.executeQuery());

    System.out.println("select * from t1 where -? = max_cni(-?,+?)");
    ps = conn.prepareStatement("select * from t1 where -? = max_cni(-?,+?)");
    ps.setInt(1,-1);
    ps.setInt(2,1);
    ps.setInt(3,1);
    pmd = ps.getParameterMetaData();
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(2));
    System.out.println("unary +? parameter type is " + pmd.getParameterTypeName(3));
    dumpRS(ps.executeQuery());

    System.out.println("Try the function again. But use, use sqrt(+?) & abs(-?) functions to send params");
    System.out.println("select * from t1 where -? = max_cni(abs(-?), sqrt(+?))");
    ps = conn.prepareStatement("select * from t1 where -? = max_cni(abs(-?), sqrt(+?))");
    ps.setInt(1,-2);
    ps.setInt(2,1);
    ps.setInt(3,4);
    pmd = ps.getParameterMetaData();
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(2));
    System.out.println("unary +? parameter type is " + pmd.getParameterTypeName(3));
    dumpRS(ps.executeQuery());

    System.out.println("select * from t1 where c11 between -? and +?");
    ps = conn.prepareStatement("select * from t1 where c11 between -? and +?");
    ps.setInt(1,-1);
    ps.setInt(2,1);
    pmd = ps.getParameterMetaData();
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
    System.out.println("unary +? parameter type is " + pmd.getParameterTypeName(2));
    dumpRS(ps.executeQuery());

    System.out.println("select * from t1 where +? not in (-?, +?, 2, ?)");
    ps = conn.prepareStatement("select * from t1 where +? not in (-?, +?, 2, ?)");
    ps.setInt(1,-11);
    ps.setInt(2,1);
    ps.setInt(3,1);
    ps.setInt(4,4);
    pmd = ps.getParameterMetaData();
    System.out.println("unary +? parameter type is " + pmd.getParameterTypeName(1));
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(2));
    System.out.println("unary +? parameter type is " + pmd.getParameterTypeName(3));
    System.out.println("? parameter type is " + pmd.getParameterTypeName(4));
    dumpRS(ps.executeQuery());

    System.out.println("select * from t1 where +? < c12");
    ps = conn.prepareStatement("select * from t1 where +? < c12");
    ps.setInt(1,0);
    pmd = ps.getParameterMetaData();
    System.out.println("unary +? parameter type is " + pmd.getParameterTypeName(1));
    dumpRS(ps.executeQuery());

    System.out.println("select * from t1 where -? = c11 + ?");
    ps = conn.prepareStatement("select * from t1 where -? = c11 + ?");
    ps.setInt(1,2);
    ps.setInt(2,-1);
    pmd = ps.getParameterMetaData();
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
    System.out.println("? parameter type is " + pmd.getParameterTypeName(1));
    dumpRS(ps.executeQuery());

    System.out.println("select * from t1 where c11 + ? = -?");
    ps = conn.prepareStatement("select * from t1 where c11 + ? = -?");
    ps.setInt(1,-1);
    ps.setInt(2,2);
    pmd = ps.getParameterMetaData();
    System.out.println("? parameter type is " + pmd.getParameterTypeName(1));
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
    dumpRS(ps.executeQuery());

    System.out.println("select * from t1 where c11 + c12 = -?");
    ps = conn.prepareStatement("select * from t1 where c11 + c12 = -?");
    ps.setInt(1,2);
    pmd = ps.getParameterMetaData();
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
    dumpRS(ps.executeQuery());

    System.out.println("select * from t1 where -? not in (select c21+? from t2)");
    ps = conn.prepareStatement("select * from t1 where -? not in (select c21+? from t2)");
    ps.setInt(1,1);
    ps.setInt(2,2);
    pmd = ps.getParameterMetaData();
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
    System.out.println("? parameter type is " + pmd.getParameterTypeName(1));
    dumpRS(ps.executeQuery());

    System.out.println("select cast(-? as smallint), cast(+? as int) from t1");
    ps = conn.prepareStatement("select cast(-? as smallint), cast(+? as int) from t1");
    ps.setInt(1,2);
    ps.setInt(2,2);
    pmd = ps.getParameterMetaData();
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
    System.out.println("unary +? parameter type is " + pmd.getParameterTypeName(2));
    dumpRS(ps.executeQuery());

    System.out.println("select nullif(-?,c11) from t1");
    ps = conn.prepareStatement("select nullif(-?,c11) from t1");
    ps.setInt(1,22);
    pmd = ps.getParameterMetaData();
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
    dumpRS(ps.executeQuery());

    System.out.println("select sqrt(-?) from t1");
    ps = conn.prepareStatement("select sqrt(-?) from t1");
    ps.setInt(1,-64);
    pmd = ps.getParameterMetaData();
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
    dumpRS(ps.executeQuery());

    System.out.println("select * from t1 where c11 = any (select -? from t2)");
    try {
      ps = conn.prepareStatement("select * from t1 where c11 = any (select -? from t2)");
      ps.setInt(1,1);
      pmd = ps.getParameterMetaData();
      System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
      dumpRS(ps.executeQuery());
    }
    catch (SQLException e) {
      System.out.println("SQL State : " + e.getSQLState());
      System.out.println("Got expected exception " + e.getMessage());
    }

    System.out.println("Negative test - -?/+? at the beginning and/ at the end of where clause");
    System.out.println("select * from t1 where -? and c11=c11 or +?");
    try {
      ps = conn.prepareStatement("select * from t1 where -? and c11=c11 or +?");
      ps.setString(1,"SYS%");
      ps.setString(2,"");
      pmd = ps.getParameterMetaData();
      System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
      System.out.println("unary +? parameter type is " + pmd.getParameterTypeName(2));
      dumpRS(ps.executeQuery());
      System.out.println("FAIL-test should have failed");
    }
    catch (SQLException e) {
      System.out.println("SQL State : " + e.getSQLState());
      System.out.println("Got expected exception " + e.getMessage());
    }

    System.out.println("Negative test - -?/+? in like escape function");
    System.out.println("select * from sys.systables where tablename like -? escape +?");
    try {
      ps = conn.prepareStatement("select * from sys.systables where tablename like -? escape +?");
      ps.setString(1,"SYS%");
      ps.setString(2,"");
      pmd = ps.getParameterMetaData();
      System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
      System.out.println("unary +? parameter type is " + pmd.getParameterTypeName(2));
      dumpRS(ps.executeQuery());
      System.out.println("FAIL-test should have failed");
    }
    catch (SQLException e) {
      System.out.println("SQL State : " + e.getSQLState());
      System.out.println("Got expected exception " + e.getMessage());
    }

    System.out.println("Negative test - -?/+? in binary timestamp function");
    System.out.println("select timestamp(-?,+?) from t1");
    try {
      ps = conn.prepareStatement("select timestamp(-?,+?) from t1");
      ps.setInt(1,22);
      ps.setInt(2,22);
      pmd = ps.getParameterMetaData();
      System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
      dumpRS(ps.executeQuery());
      System.out.println("FAIL-test should have failed");
    }
    catch (SQLException e) {
      System.out.println("SQL State : " + e.getSQLState());
      System.out.println("Got expected exception " + e.getMessage());
    }

    System.out.println("Negative test - -? in unary timestamp function");
    System.out.println("select timestamp(-?) from t1");
    try {
      ps = conn.prepareStatement("select timestamp(-?) from t1");
      ps.setInt(1,22);
      pmd = ps.getParameterMetaData();
      System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
      dumpRS(ps.executeQuery());
      System.out.println("FAIL-test should have failed");
    }
    catch (SQLException e) {
      System.out.println("SQL State : " + e.getSQLState());
      System.out.println("Got expected exception " + e.getMessage());
    }

    System.out.println("Negative test - -? in views");
    System.out.println("create view v1 as select * from t1 where c11 = -?");
    try {
      ps = conn.prepareStatement("create view v1 as select * from t1 where c11 = -?");
      ps.setInt(1,22);
      pmd = ps.getParameterMetaData();
      System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
      dumpRS(ps.executeQuery());
      System.out.println("FAIL-test should have failed");
    }
    catch (SQLException e) {
      System.out.println("SQL State : " + e.getSQLState());
      System.out.println("Got expected exception " + e.getMessage());
    }

    System.out.println("Negative test - -? in inner join");
    System.out.println("select * from t1 inner join t1 as t333 on -?");
    try {
      ps = conn.prepareStatement("select * from t1 inner join t1 as t333 on -?");
      ps.setInt(1,22);
      pmd = ps.getParameterMetaData();
      System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
      dumpRS(ps.executeQuery());
      System.out.println("FAIL-test should have failed");
    }
    catch (SQLException e) {
      System.out.println("SQL State : " + e.getSQLState());
      System.out.println("Got expected exception " + e.getMessage());
    }

    System.out.println("Negative test - -? by itself in where clause");
    System.out.println("select * from t1 where -?");
    try {
      ps = conn.prepareStatement("select * from t1 where -?");
      ps.setInt(1,22);
      pmd = ps.getParameterMetaData();
      System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
      dumpRS(ps.executeQuery());
      System.out.println("FAIL-test should have failed");
    }
    catch (SQLException e) {
      System.out.println("SQL State : " + e.getSQLState());
      System.out.println("Got expected exception " + e.getMessage());
    }

    System.out.println("Negative test - -? is null not allowed because is null allowed on char types only");
    System.out.println("select * from t1 where -? is null");
    try {
      ps = conn.prepareStatement("select * from t1 where -? is null");
      ps.setInt(1,22);
      pmd = ps.getParameterMetaData();
      System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
      dumpRS(ps.executeQuery());
      System.out.println("FAIL-test should have failed");
    }
    catch (SQLException e) {
      System.out.println("SQL State : " + e.getSQLState());
      System.out.println("Got expected exception " + e.getMessage());
    }

    System.out.println("select case when -?=c11 then -? else c12 end from t1");
    ps = conn.prepareStatement("select case when -?=c11 then -? else c12 end from t1");
    ps.setInt(1,1);
    ps.setInt(2,22);
    pmd = ps.getParameterMetaData();
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
    System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(2));
    dumpRS(ps.executeQuery());

    System.out.println("Negative test - unary plus parameters on both sides of / operator");
    System.out.println("select * from t1 where c11 = ?/-?");
    try {
      ps = conn.prepareStatement("select * from t1 where c11 = ?/-?");
      ps.setInt(1,0);
      ps.setInt(2,0);
      pmd = ps.getParameterMetaData();
      System.out.println("? parameter type is " + pmd.getParameterTypeName(1));
      System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(2));
      dumpRS(ps.executeQuery());
      System.out.println("FAIL-test should have failed");
    }
    catch (SQLException e) {
      System.out.println("SQL State : " + e.getSQLState());
      System.out.println("Got expected exception " + e.getMessage());
    }

    System.out.println("Negative test - unary plus in || operation");
    System.out.println("select c11 || +? from t1");
    try {
      ps = conn.prepareStatement("select c11 || +? from t1");
      ps.setInt(1,0);
      pmd = ps.getParameterMetaData();
      System.out.println("? parameter type is " + pmd.getParameterTypeName(1));
      System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(2));
      dumpRS(ps.executeQuery());
      System.out.println("FAIL-test should have failed");
    }
    catch (SQLException e) {
      System.out.println("SQL State : " + e.getSQLState());
      System.out.println("Got expected exception " + e.getMessage());
    }

    System.out.println("Negative test - unary minus for char column");
    System.out.println("select * from t1 where c14 = -?");
    try {
      ps = conn.prepareStatement("select * from t1 where c14 = -?");
      ps.setInt(1,-1);
      pmd = ps.getParameterMetaData();
      System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
      dumpRS(ps.executeQuery());
      System.out.println("FAIL-test should have failed");
    }
    catch (SQLException e) {
      System.out.println("SQL State : " + e.getSQLState());
      System.out.println("Got expected exception " + e.getMessage());
    }

    System.out.println("Negative test - unary plus for char column");
    System.out.println("select * from t1 where c14 like +?");
    try {
      ps = conn.prepareStatement("select * from t1 where c14 like +?");
      ps.setInt(1,-1);
      pmd = ps.getParameterMetaData();
      System.out.println("unary -? parameter type is " + pmd.getParameterTypeName(1));
      dumpRS(ps.executeQuery());
      System.out.println("FAIL-test should have failed");
    }
    catch (SQLException e) {
      System.out.println("SQL State : " + e.getSQLState());
View Full Code Here

Examples of java.sql.ParameterMetaData

  public static void main(String[] args) {
    Connection con = null;
    Statement  s;
    CallableStatement  cs;
    PreparedStatement  ps;
    ParameterMetaData paramMetaData;

    System.out.println("Test parameterMetaDataJdbc30 starting");

    try
    {
      // use the ij utility to read the property file and
      // make the initial connection.
      ij.getPropertyArg(args);
      con = ij.startJBMS();
      con.setAutoCommit(true); // make sure it is true
      isDerbyNet = TestUtil.isNetFramework();

      s = con.createStatement();

      /* Create the table and do any other set-up */
      TestUtil.cleanUpTest(s, testObjects);
      setUpTest(s);

      s.executeUpdate("create function RDB(P1 INT) RETURNS DECIMAL(10,2) language java external name 'org.apache.derbyTesting.functionTests.tests.lang.outparams30.returnsBigDecimal' parameter style java");

      //first testing a callable statement
      s.executeUpdate("create procedure dummyint(in a integer, in b integer, out c integer, inout d integer) language java external name 'org.apache.derbyTesting.functionTests.tests.jdbcapi.parameterMetaDataJdbc30.dummyint' parameter style java");
      cs = con.prepareCall("CALL dummyint(?,?,?,?)");

      // parameters 1 and 2 are input only
      cs.setInt(1,1);
      cs.setInt(2,1);
      //parameter 3 is output only
      cs.registerOutParameter(3,Types.INTEGER);
      // parameter 4 is input and output
      Object x = new Integer(1);
      cs.setObject(4,x, Types.INTEGER);
      cs.registerOutParameter(4,Types.INTEGER);

      //verify the meta data for the parameters
      paramMetaData = cs.getParameterMetaData();
      System.out.println("parameters count for callable statement is " + paramMetaData.getParameterCount());
      // TODO: Some of the OUT params are getting reported as IN_OUT for embedded.
      // Network server reports it correctly.
      dumpParameterMetaData(paramMetaData);
      cs.execute();

      //bug 4450 - parameter meta data info for the return parameter was giving
      //null pointer exception. In the past, we didn't need to keep the return
      //parameter info for callable statement execution and hence we never
      //generated the meta data for it. To fix the problem, at the parsing time,
      //I set a flag if the call statement is of ? = form. If so, the first
      //parameter is a return parameter and save it's meta data rather than
      //discarding it.
      System.out.println("Bug 4450 - generate metadata for return parameter");
      cs = con.prepareCall("? = call RDB(?)");
      paramMetaData = cs.getParameterMetaData();
      System.out.println("param count is: "+paramMetaData.getParameterCount());
      dumpParameterMetaData(paramMetaData);

      //next testing a prepared statement
      ps = con.prepareStatement("insert into t values(?, ?, ?, ?, ?)");
      ps.setNull(1, java.sql.Types.CHAR);
      ps.setInt(2, 1);
      ps.setNull(3, java.sql.Types.INTEGER);
      ps.setBigDecimal(4,new BigDecimal("1"));
      ps.setNull(5, java.sql.Types.DATE);

      paramMetaData = ps.getParameterMetaData();
      System.out.println("parameters count for prepared statement is " + paramMetaData.getParameterCount());
      // JCC seems to report these parameters as MODE_UNKNOWN, where as Derby uses MODE_IN
      // JCC behaviour with network server matches its behaviour with DB2
      // getPrecision() returns 0 for CHAR/DATE/BIT types for Derby. JCC shows maxlen
      dumpParameterMetaData(paramMetaData);
      ps.execute();

      //bug 4533 - associated parameters should not be included in the parameter meta data list
      //Following statement systab will generate 4 associated parameters for the 2
      //user parameters. This results in total 6 parameters for the prepared statement
      //internally. But we should only show 2 user visible parameters through
      //getParameterMetaData().
      System.out.println("Bug 4533 - hide associated parameters");
      ps = con.prepareStatement("select * from sys.systables where " +
             " tablename like ? and tableID like ?");
      ps.setString (1, "SYS%");
      ps.setString (2, "8000001%");
      paramMetaData = ps.getParameterMetaData();
      System.out.println("parameters count for prepared statement is " + paramMetaData.getParameterCount());
      dumpParameterMetaData(paramMetaData);
      ps.execute();

      // DERBY-44 added support for SELECT ... WHERE column LIKE ? ESCAPE ?
      // This test case tests
      //   a) that such a statement compiles, and
      //   b) that we get the correct error message if the escape
      //      sequence is an empty string (at one point this would
      //      lead to a StringIndexOutOfBoundsException)
      System.out.println("variation 1, testing jira 44");
      ps = con.prepareStatement("select * from sys.systables where tablename like ? escape ?");
      ps.setString (1, "SYS%");
      ps.setString (2, "");
      paramMetaData = ps.getParameterMetaData();
      System.out.println("parameters count for prepared statement is " + paramMetaData.getParameterCount());
      dumpParameterMetaData(paramMetaData);
      try {
          ResultSet rs = ps.executeQuery();
          rs.next();
          System.out.println("Jira 44 failed (didn't get SQLSTATE 22019)");
          rs.close();
      } catch (SQLException e) {
          if (!"22019".equals(e.getSQLState())) {
              System.out.println("Jira 44 failed.");
              e.printStackTrace(System.out);
          }
      }

      // the test no longer tests 4552, but kept as an interesting test scenario
      // bug 4552 - no parameters would be returned for execute statement using
      // System.out.println("Bug 4552 - no parameters would be returned for execute statement using");
      // orig: ps = con.prepareStatement("execute statement systab using values('SYS%','8000001%')");
      ps = con.prepareStatement("select * from sys.systables where tablename like 'SYS%' and tableID like '8000001%'");

      paramMetaData = ps.getParameterMetaData();
      System.out.println("parameters count for prepared statement is " + paramMetaData.getParameterCount());
      dumpParameterMetaData(paramMetaData);
      ps.execute();

      //Bug 4654 - Null Pointer exception while executuing a select with a
      //where clause parameter of type 'TRUE' or 'FALSE' constants. The existing prior to
      //exposing parameter metadata didn't need to fill in metadata information for where
      //clause parameter in the example above.
      // This no longer makes sense, for we cannot take BOOLEANs anymore.
      // replace with a simple where 1 = ?. Which would take either 1 for true, or 0 for false
      System.out.println("Bug 4654 - fill in where clause parameter type info");
      ps = con.prepareStatement("select * from t where 1=? for update");

      paramMetaData = ps.getParameterMetaData();
      System.out.println("parameters count for prepared statement is " + paramMetaData.getParameterCount());
      dumpParameterMetaData(paramMetaData);
      dumpParameterMetaDataNegative(paramMetaData);
      //ps.setBoolean(1,true);
      ps.setInt(1,1);
      ps.execute();

      System.out.println("test: no parameter for the statement and then do getParameterMetaData()");
      ps = con.prepareStatement("select * from t");
      paramMetaData = ps.getParameterMetaData();
      System.out.println("parameters count for prepared statement is " + paramMetaData.getParameterCount());
      dumpParameterMetaData(paramMetaData);
      ps.execute();

      cs.close();
      ps.close();   
View Full Code Here

Examples of java.sql.ParameterMetaData

  protected void showStatementState(String when, Statement s) throws SQLException {
    super.showStatementState(when, s);
    System.out.println("  getResultSetHoldability() " + rsHoldability(s.getResultSetHoldability()));
    if (s instanceof PreparedStatement) {
      PreparedStatement ps = (PreparedStatement) s;
      ParameterMetaData psmd = ps.getParameterMetaData();
      System.out.println("  Parameter Count " + psmd.getParameterCount());
      for (int i = 1; i <= psmd.getParameterCount(); i++) {
        System.out.println("    " + i + " type " + psmd.getParameterType(i));
      }
    }
  }
View Full Code Here

Examples of java.sql.ParameterMetaData

  private void parseSQLDTA_work(DRDAStatement stmt) throws DRDAProtocolException,SQLException
  {
    String strVal;
    PreparedStatement ps = stmt.getPreparedStatement();
    int codePoint;
    ParameterMetaData pmeta = null;

    // Clear params without releasing storage
    stmt.clearDrdaParams();

    int numVars = 0;
    boolean rtnParam = false;

    reader.markCollection();   
    codePoint = reader.getCodePoint();
    while (codePoint != -1)
    {
        switch (codePoint)
        {
          // required
          case CodePoint.FDODSC:
            while (reader.getDdmLength() > 6) //we get parameter info til last 6 byte
          {
            int dtaGrpLen = reader.readUnsignedByte();
            int numVarsInGrp = (dtaGrpLen - 3) / 3;
            if (SanityManager.DEBUG)
              trace("num of vars in this group is: "+numVarsInGrp);
            reader.readByte();    // tripletType
            reader.readByte();    // id
            for (int j = 0; j < numVarsInGrp; j++)
            {
              final byte t = reader.readByte();
              if (SanityManager.DEBUG)
                trace("drdaType is: "+ "0x" +
                         Integer.toHexString(t));
              int drdaLength = reader.readNetworkShort();
              if (SanityManager.DEBUG)
                trace("drdaLength is: "+drdaLength);
              stmt.addDrdaParam(t, drdaLength);
            }
          }
          numVars = stmt.getDrdaParamCount();
          if (SanityManager.DEBUG)
            trace("numVars = " + numVars);
          if (ps == null)    // it is a CallableStatement under construction
          {
            String marks = "(?"// construct parameter marks
            for (int i = 1; i < numVars; i++)
              marks += ", ?";
            String prepareString = "call " + stmt.procName + marks + ")";
            if (SanityManager.DEBUG)
              trace ("$$ prepareCall is: "+prepareString);
            CallableStatement cs = null;
            try {
              cs = (CallableStatement)
                stmt.prepare(prepareString);     
              stmt.registerAllOutParams();
            } catch (SQLException se) {
              if (! stmt.outputExpected ||
                (!se.getSQLState().equals(SQLState.LANG_NO_METHOD_FOUND)))
                throw se;
              if (SanityManager.DEBUG)
                trace("****** second try with return parameter...");
              // Save first SQLException most likely suspect
              if (numVars == 1)
                prepareString = "? = call " + stmt.procName +"()";
              else
                prepareString = "? = call " + stmt.procName +"("+marks.substring(3) + ")";
              if (SanityManager.DEBUG)
                trace ("$$ prepareCall is: "+prepareString);
              try {
                cs = (CallableStatement) stmt.prepare(prepareString);
              } catch (SQLException se2)
              {
                // The first exception is the most likely suspect
                throw se;
              }
              rtnParam = true;
            }
            ps = cs;
            stmt.ps = ps;
          }

          pmeta = stmt.getParameterMetaData();

          reader.readBytes(6)// descriptor footer
          break;
        // optional
        case CodePoint.FDODTA:
          reader.readByte()// row indicator
          for (int i = 0; i < numVars; i++)
          {
         
            if ((stmt.getParamDRDAType(i+1) & 0x1) == 0x1// nullable
            {
              int nullData = reader.readUnsignedByte();
              if ((nullData & 0xFF) == FdocaConstants.NULL_DATA)
              {
                if (SanityManager.DEBUG)
                  trace("******param null");
                if (pmeta.getParameterMode(i + 1)
                  != JDBC30Translation.PARAMETER_MODE_OUT )
                    ps.setNull(i+1, pmeta.getParameterType(i+1));
                if (stmt.isOutputParam(i+1))
                  stmt.registerOutParam(i+1);
                continue;
              }
            }
View Full Code Here

Examples of java.sql.ParameterMetaData

   */
  private void writeSQLDARD(DRDAStatement stmt, boolean rtnOutput, SQLException e) throws DRDAProtocolException, SQLException
  {
    PreparedStatement ps = stmt.getPreparedStatement();
    ResultSetMetaData rsmeta = ps.getMetaData();
    ParameterMetaData pmeta = stmt.getParameterMetaData();
    int numElems = 0;
    if (e == null || e instanceof SQLWarning)
    {
      if (rtnOutput && (rsmeta != null))
        numElems = rsmeta.getColumnCount();
      else if ((! rtnOutput) && (pmeta != null))
        numElems = pmeta.getParameterCount();
    }

    writer.createDssObject();

    // all went well we will just write a null SQLCA
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.