protected override void FetchInternal(ResultSet rs, int columnIndex) { Date d = rs.getDate(columnIndex); if (d != null) { _d = new DateTime(DbConvert.JavaDateToClrTicks(d)); } }
protected override void FetchInternal(ResultSet rs, int columnIndex) { Timestamp ts = rs.getTimestamp(columnIndex); if (ts != null) { _d = new DateTime(DbConvert.JavaTimestampToClrTicks(ts)); } }
protected override void FetchInternal(ResultSet rs, int columnIndex) { Time t = rs.getTime(columnIndex); if (t != null) { _t = new TimeSpan(DbConvert.JavaTimeToClrTicks(t)); } }
protected virtual void FillOutputParameter(DbParameter parameter, int index) { CallableStatement callableStatement = (CallableStatement)_statement; ParameterMetadataWrapper parameterMetadataWrapper = null; // FIXME wait for other drivers to implement // try { // parameterMetadataWrapper = new ParameterMetadataWrapper(callableStatement.getParameterMetaData()); // } // catch { // // suppress error : ms driver for sql server does not implement getParameterMetaData // // suppress exception : ms driver for sql server does not implement getParameterMetaData // } DbConvert.JavaSqlTypes javaSqlType = (DbConvert.JavaSqlTypes)((AbstractDbParameter)parameter).JdbcType; try { parameter.Value = DbConvert.JavaResultSetToClrWrapper(callableStatement,index,javaSqlType,parameter.Size,parameterMetadataWrapper); } catch(java.sql.SQLException e) { throw CreateException(e); } }
protected virtual void BindInputParameter(AbstractDbParameter parameter, int parameterIndex) { object value = parameter.ConvertedValue; // java parameters are 1 based, while .net are 0 based parameterIndex++; PreparedStatement preparedStatement = ((PreparedStatement)_statement); switch ((DbConvert.JavaSqlTypes)parameter.JdbcType) { case DbConvert.JavaSqlTypes.DATALINK: case DbConvert.JavaSqlTypes.DISTINCT: case DbConvert.JavaSqlTypes.JAVA_OBJECT: case DbConvert.JavaSqlTypes.OTHER: case DbConvert.JavaSqlTypes.REF: case DbConvert.JavaSqlTypes.STRUCT: { preparedStatement.setObject(parameterIndex, value, (int)parameter.JdbcType); return; } } if ((value is DBNull) || (value == null)) { preparedStatement.setNull(parameterIndex, (int)((AbstractDbParameter)parameter).JdbcType); } else if (value is long) { preparedStatement.setLong(parameterIndex, (long)value); } else if (value is byte[]) { if (((byte[])value).Length <= 4000) { preparedStatement.setBytes(parameterIndex, vmw.common.TypeUtils.ToSByteArray((byte[]) value)); } else { InputStream iStream=new ByteArrayInputStream(vmw.common.TypeUtils.ToSByteArray((byte[]) value)); preparedStatement.setBinaryStream(parameterIndex,iStream,((byte[])value).Length); } } else if (value is byte) { preparedStatement.setByte(parameterIndex, (sbyte)(byte)value); } else if (value is char[]) { Reader reader = new CharArrayReader((char[])value); preparedStatement.setCharacterStream(parameterIndex,reader,((char[])value).Length); } else if (value is bool) { preparedStatement.setBoolean(parameterIndex, (bool) value); } else if (value is char) { preparedStatement.setString(parameterIndex, ((char)value).ToString()); } else if (value is DateTime) { switch ((DbConvert.JavaSqlTypes)parameter.JdbcType) { default: case DbConvert.JavaSqlTypes.TIMESTAMP: preparedStatement.setTimestamp(parameterIndex,DbConvert.ClrTicksToJavaTimestamp(((DateTime)value).Ticks)); break; case DbConvert.JavaSqlTypes.TIME: preparedStatement.setTime(parameterIndex,DbConvert.ClrTicksToJavaTime(((DateTime)value).Ticks)); break; case DbConvert.JavaSqlTypes.DATE: preparedStatement.setDate(parameterIndex,DbConvert.ClrTicksToJavaDate(((DateTime)value).Ticks)); break; } } else if (value is TimeSpan) { if (parameter.JdbcType == (int)DbConvert.JavaSqlTypes.TIMESTAMP) preparedStatement.setTimestamp(parameterIndex,DbConvert.ClrTicksToJavaTimestamp(((TimeSpan)value).Ticks)); else preparedStatement.setTime(parameterIndex,DbConvert.ClrTicksToJavaTime(((TimeSpan)value).Ticks)); } else if (value is Decimal) { preparedStatement.setBigDecimal(parameterIndex, vmw.common.PrimitiveTypeUtils.DecimalToBigDecimal((Decimal) value)); } else if (value is double) { preparedStatement.setDouble(parameterIndex, (double)value); } else if (value is float) { preparedStatement.setFloat(parameterIndex, (float)value); } else if (value is int) { preparedStatement.setInt(parameterIndex, (int)value); } else if (value is string) { //can not be done for inout params, due to Oracle problem with FIXED_CHAR out param fetching if (parameter.Direction == ParameterDirection.Input && preparedStatement is Mainsoft.Data.Jdbc.Providers.IPreparedStatement && (DbConvert.JavaSqlTypes)parameter.JdbcType == DbConvert.JavaSqlTypes.CHAR) { ((Mainsoft.Data.Jdbc.Providers.IPreparedStatement)preparedStatement) .setChar(parameterIndex, (string)value); } else preparedStatement.setString(parameterIndex, (string)value); } else if (value is Guid) { preparedStatement.setString(parameterIndex, value.ToString()); } else if (value is short) { preparedStatement.setShort(parameterIndex, (short)value); } else if (value is sbyte) { preparedStatement.setByte(parameterIndex, (sbyte)value); } else { preparedStatement.setObject(parameterIndex, value); } }