home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / sun / jdbc / odbc / JdbcOdbcCallableStatement.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  5.8 KB  |  293 lines

  1. package sun.jdbc.odbc;
  2.  
  3. import java.math.BigDecimal;
  4. import java.sql.CallableStatement;
  5. import java.sql.Date;
  6. import java.sql.SQLException;
  7. import java.sql.Time;
  8. import java.sql.Timestamp;
  9.  
  10. public class JdbcOdbcCallableStatement extends JdbcOdbcPreparedStatement implements CallableStatement {
  11.    private boolean lastParameterNull = false;
  12.  
  13.    public JdbcOdbcCallableStatement(JdbcOdbcConnectionInterface var1) {
  14.       super(var1);
  15.    }
  16.  
  17.    public void registerOutParameter(int var1, int var2) throws SQLException {
  18.       this.registerOutParameter(var1, var2, 0);
  19.    }
  20.  
  21.    public void registerOutParameter(int var1, int var2, int var3) throws SQLException {
  22.       this.setSqlType(var1, var2);
  23.       this.setOutputParameter(var1, true);
  24.       int var4;
  25.       switch (var2) {
  26.          case -7:
  27.             var4 = 1;
  28.             break;
  29.          case -6:
  30.             var4 = 4;
  31.             break;
  32.          case -5:
  33.             var4 = 20;
  34.             break;
  35.          case 2:
  36.          case 3:
  37.             var4 = 38;
  38.             break;
  39.          case 4:
  40.             var4 = 11;
  41.             break;
  42.          case 5:
  43.             var4 = 6;
  44.             break;
  45.          case 6:
  46.          case 8:
  47.             var4 = 22;
  48.             break;
  49.          case 7:
  50.             var4 = 13;
  51.             break;
  52.          case 91:
  53.             var4 = 10;
  54.             break;
  55.          case 92:
  56.             var4 = 8;
  57.             break;
  58.          case 93:
  59.             var4 = 19;
  60.             if (var3 > 0) {
  61.                var4 += var3 + 1;
  62.             }
  63.             break;
  64.          default:
  65.             var4 = ((JdbcOdbcStatement)this).getPrecision(var2);
  66.             if (var4 <= 0 || var4 > JdbcOdbcLimits.DEFAULT_IN_PRECISION) {
  67.                var4 = JdbcOdbcLimits.DEFAULT_IN_PRECISION;
  68.             }
  69.       }
  70.  
  71.       byte[] var5 = ((JdbcOdbcPreparedStatement)this).allocBindBuf(var1, var4 + 1);
  72.       byte[] var6 = ((JdbcOdbcPreparedStatement)this).getLengthBuf(var1);
  73.       var2 = OdbcDef.jdbcTypeToOdbc(var2);
  74.       super.OdbcApi.SQLBindOutParameterString(super.hStmt, var1, var2, var3, var5, var6);
  75.    }
  76.  
  77.    public boolean wasNull() throws SQLException {
  78.       return this.lastParameterNull;
  79.    }
  80.  
  81.    public String getString(int var1) throws SQLException {
  82.       if (this.isNull(var1)) {
  83.          return null;
  84.       } else {
  85.          this.getSqlType(var1);
  86.          String var2 = new String(((JdbcOdbcPreparedStatement)this).getDataBuf(var1), 0);
  87.          var2 = var2.trim();
  88.          if (JdbcOdbcObject.isTracing()) {
  89.             JdbcOdbcObject.trace("String value for OUT parameter " + var1 + "=" + var2);
  90.          }
  91.  
  92.          return var2;
  93.       }
  94.    }
  95.  
  96.    public boolean getBoolean(int var1) throws SQLException {
  97.       if (this.isNull(var1)) {
  98.          return false;
  99.       } else {
  100.          boolean var2 = false;
  101.          if (this.getString(var1).equals("1")) {
  102.             var2 = true;
  103.          }
  104.  
  105.          return var2;
  106.       }
  107.    }
  108.  
  109.    public byte getByte(int var1) throws SQLException {
  110.       return (byte)this.getInt(var1);
  111.    }
  112.  
  113.    public short getShort(int var1) throws SQLException {
  114.       return (short)this.getInt(var1);
  115.    }
  116.  
  117.    public int getInt(int var1) throws SQLException {
  118.       if (this.isNull(var1)) {
  119.          return 0;
  120.       } else {
  121.          Integer var2 = new Integer(this.getString(var1));
  122.          return var2;
  123.       }
  124.    }
  125.  
  126.    public long getLong(int var1) throws SQLException {
  127.       if (this.isNull(var1)) {
  128.          return 0L;
  129.       } else {
  130.          Integer var2 = new Integer(this.getString(var1));
  131.          return var2.longValue();
  132.       }
  133.    }
  134.  
  135.    public float getFloat(int var1) throws SQLException {
  136.       if (this.isNull(var1)) {
  137.          return 0.0F;
  138.       } else {
  139.          Float var2 = new Float(this.getString(var1));
  140.          return var2;
  141.       }
  142.    }
  143.  
  144.    public double getDouble(int var1) throws SQLException {
  145.       if (this.isNull(var1)) {
  146.          return (double)0.0F;
  147.       } else {
  148.          Double var2 = new Double(this.getString(var1));
  149.          return var2;
  150.       }
  151.    }
  152.  
  153.    public BigDecimal getBigDecimal(int var1, int var2) throws SQLException {
  154.       if (this.isNull(var1)) {
  155.          return null;
  156.       } else {
  157.          BigDecimal var3 = new BigDecimal(this.getString(var1));
  158.          return var3.setScale(var2, 6);
  159.       }
  160.    }
  161.  
  162.    public byte[] getBytes(int var1) throws SQLException {
  163.       return this.isNull(var1) ? null : JdbcOdbcObject.hexStringToByteArray(this.getString(var1));
  164.    }
  165.  
  166.    public Date getDate(int var1) throws SQLException {
  167.       String var2 = this.getString(var1);
  168.       return var2 == null ? null : Date.valueOf(var2);
  169.    }
  170.  
  171.    public Time getTime(int var1) throws SQLException {
  172.       String var2 = this.getString(var1);
  173.       return var2 == null ? null : Time.valueOf(var2);
  174.    }
  175.  
  176.    public Timestamp getTimestamp(int var1) throws SQLException {
  177.       String var2 = this.getString(var1);
  178.       if (var2 == null) {
  179.          return null;
  180.       } else {
  181.          if (var2.length() == 10) {
  182.             var2 = var2 + " 00:00:00";
  183.          }
  184.  
  185.          return Timestamp.valueOf(var2);
  186.       }
  187.    }
  188.  
  189.    public Object getObject(int var1) throws SQLException {
  190.       Object var2 = null;
  191.       int var3 = this.getSqlType(var1);
  192.       if (this.isNull(var1)) {
  193.          return null;
  194.       } else {
  195.          switch (var3) {
  196.             case -7:
  197.                var2 = new Boolean(this.getBoolean(var1));
  198.                break;
  199.             case -6:
  200.                var2 = new Integer(this.getByte(var1));
  201.                break;
  202.             case -5:
  203.                var2 = new Long(this.getLong(var1));
  204.                break;
  205.             case -4:
  206.             case -3:
  207.             case -2:
  208.                var2 = this.getBytes(var1);
  209.                break;
  210.             case -1:
  211.             case 1:
  212.             case 12:
  213.                var2 = this.getString(var1);
  214.                break;
  215.             case 2:
  216.             case 3:
  217.                var2 = this.getBigDecimal(var1, JdbcOdbcLimits.DEFAULT_OUT_SCALE);
  218.                break;
  219.             case 4:
  220.                var2 = new Integer(this.getInt(var1));
  221.                break;
  222.             case 5:
  223.                var2 = new Integer(this.getShort(var1));
  224.                break;
  225.             case 6:
  226.             case 7:
  227.                var2 = new Float(this.getFloat(var1));
  228.                break;
  229.             case 8:
  230.                var2 = new Double(this.getDouble(var1));
  231.                break;
  232.             case 91:
  233.                var2 = this.getDate(var1);
  234.                break;
  235.             case 92:
  236.                var2 = this.getTime(var1);
  237.                break;
  238.             case 93:
  239.                var2 = this.getTimestamp(var1);
  240.          }
  241.  
  242.          return var2;
  243.       }
  244.    }
  245.  
  246.    protected boolean isNull(int var1) throws SQLException {
  247.       if (!this.isOutputParameter(var1)) {
  248.          throw new SQLException("Parameter " + var1 + " is not an OUTPUT parameter");
  249.       } else {
  250.          boolean var2 = false;
  251.          var2 = ((JdbcOdbcPreparedStatement)this).getParamLength(var1) == -1;
  252.          if (JdbcOdbcObject.isTracing()) {
  253.             JdbcOdbcObject.trace("Output Parameter " + var1 + " null: " + var2);
  254.          }
  255.  
  256.          this.lastParameterNull = var2;
  257.          return var2;
  258.       }
  259.    }
  260.  
  261.    protected void setSqlType(int var1, int var2) {
  262.       if (var1 >= 1 && var1 <= super.numParams) {
  263.          super.boundParams[var1 - 1].setSqlType(var2);
  264.       }
  265.  
  266.    }
  267.  
  268.    protected int getSqlType(int var1) {
  269.       int var2 = 1111;
  270.       if (var1 >= 1 && var1 <= super.numParams) {
  271.          var2 = super.boundParams[var1 - 1].getSqlType();
  272.       }
  273.  
  274.       return var2;
  275.    }
  276.  
  277.    protected void setOutputParameter(int var1, boolean var2) {
  278.       if (var1 >= 1 && var1 <= super.numParams) {
  279.          super.boundParams[var1 - 1].setOutputParameter(var2);
  280.       }
  281.  
  282.    }
  283.  
  284.    protected boolean isOutputParameter(int var1) {
  285.       boolean var2 = false;
  286.       if (var1 >= 1 && var1 <= super.numParams) {
  287.          var2 = super.boundParams[var1 - 1].isOutputParameter();
  288.       }
  289.  
  290.       return var2;
  291.    }
  292. }
  293.