Exemple #1
0
        protected override void PrepareParameters()
        {
            // Prepare parameters
            foreach (SQLParameter parameter in Parameters)
            {
                OraHome.Client.OracleParameter oracleParameter = (OraHome.Client.OracleParameter)_command.CreateParameter();
                oracleParameter.ParameterName = String.Format("@{0}", parameter.Name);
                switch (parameter.Direction)
                {
                case SQLDirection.Out: oracleParameter.Direction = System.Data.ParameterDirection.Output; break;

                case SQLDirection.InOut: oracleParameter.Direction = System.Data.ParameterDirection.InputOutput; break;

                case SQLDirection.Result: oracleParameter.Direction = System.Data.ParameterDirection.ReturnValue; break;

                default: oracleParameter.Direction = System.Data.ParameterDirection.Input; break;
                }

                if (parameter.Type is SQLStringType)
                {
                    oracleParameter.OracleDbType = OraHome.Client.OracleDbType.Varchar2;
                    oracleParameter.Size         = ((SQLStringType)parameter.Type).Length;
                }
                else if (parameter.Type is SQLBooleanType)
                {
                    oracleParameter.OracleDbType = OraHome.Client.OracleDbType.Int32;
                }
                else if (parameter.Type is SQLIntegerType)
                {
                    switch (((SQLIntegerType)parameter.Type).ByteCount)
                    {
                    case 1: oracleParameter.OracleDbType = OraHome.Client.OracleDbType.Byte; break;

                    case 2: oracleParameter.OracleDbType = OraHome.Client.OracleDbType.Int16; break;

                    case 8:
                        oracleParameter.OracleDbType = OraHome.Client.OracleDbType.Decimal;
                        oracleParameter.Precision    = 20;
                        oracleParameter.Scale        = 0;
                        break;

                    default: oracleParameter.OracleDbType = OraHome.Client.OracleDbType.Int32; break;
                    }
                }
                else if (parameter.Type is SQLNumericType)
                {
                    SQLNumericType type = (SQLNumericType)parameter.Type;
                    oracleParameter.OracleDbType = OraHome.Client.OracleDbType.Decimal;
                    oracleParameter.Precision    = type.Precision;
                    oracleParameter.Scale        = type.Scale;
                }
                else if (parameter.Type is SQLBinaryType)
                {
                    oracleParameter.OracleDbType = OraHome.Client.OracleDbType.Blob;
                }
                else if (parameter.Type is SQLTextType)
                {
                    oracleParameter.OracleDbType = OraHome.Client.OracleDbType.Clob;
                }
                else if (parameter.Type is SQLDateTimeType)
                {
                    oracleParameter.OracleDbType = OraHome.Client.OracleDbType.Date;
                }
                else if (parameter.Type is SQLDateType)
                {
                    oracleParameter.OracleDbType = OraHome.Client.OracleDbType.Date;
                }
                else if (parameter.Type is SQLTimeType)
                {
                    oracleParameter.OracleDbType = OraHome.Client.OracleDbType.Date;
                }
                else if (parameter.Type is SQLGuidType)
                {
                    oracleParameter.OracleDbType = OraHome.Client.OracleDbType.Char;
                    oracleParameter.Size         = 24;
                }
                else if (parameter.Type is SQLMoneyType)
                {
                    oracleParameter.OracleDbType = OraHome.Client.OracleDbType.Decimal;
                    oracleParameter.Precision    = 28;
                    oracleParameter.Scale        = 8;
                }
                else
                {
                    throw new ConnectionException(ConnectionException.Codes.UnknownSQLDataType, parameter.Type.GetType().Name);
                }
                _command.Parameters.Add(oracleParameter);
            }
        }
        protected override void PrepareParameters()
        {
            // Prepare parameters
            SQLParameter parameter;

            for (int index = 0; index < _parameterIndexes.Length; index++)
            {
                parameter = Parameters[_parameterIndexes[index]];
                IBM.DB2Parameter dB2Parameter = (IBM.DB2Parameter)_command.CreateParameter();
                dB2Parameter.ParameterName = String.Format("@{0}{1}", parameter.Name, index.ToString());
                switch (parameter.Direction)
                {
                case SQLDirection.Out: dB2Parameter.Direction = System.Data.ParameterDirection.Output; break;

                case SQLDirection.InOut: dB2Parameter.Direction = System.Data.ParameterDirection.InputOutput; break;

                case SQLDirection.Result: dB2Parameter.Direction = System.Data.ParameterDirection.ReturnValue; break;

                default: dB2Parameter.Direction = System.Data.ParameterDirection.Input; break;
                }

                if (parameter.Type is SQLStringType)
                {
                    dB2Parameter.DB2Type = IBM.DB2Type.VarChar;
                    dB2Parameter.Size    = ((SQLStringType)parameter.Type).Length;
                }
                else if (parameter.Type is SQLBooleanType)
                {
                    dB2Parameter.DB2Type = IBM.DB2Type.Integer;
                }
                else if (parameter.Type is SQLIntegerType)
                {
                    switch (((SQLIntegerType)parameter.Type).ByteCount)
                    {
                    case 1: dB2Parameter.DB2Type = IBM.DB2Type.Integer; break;

                    case 2: dB2Parameter.DB2Type = IBM.DB2Type.SmallInt; break;

                    case 8: dB2Parameter.DB2Type = IBM.DB2Type.BigInt; break;

                    default: dB2Parameter.DB2Type = IBM.DB2Type.Integer; break;
                    }
                }
                else if (parameter.Type is SQLNumericType)
                {
                    SQLNumericType type = (SQLNumericType)parameter.Type;
                    dB2Parameter.DB2Type   = IBM.DB2Type.Decimal;                   // could not be decimal because of issue with DB2/400
                    dB2Parameter.Scale     = type.Scale;
                    dB2Parameter.Precision = type.Precision;
                }
                else if (parameter.Type is SQLFloatType)
                {
                    SQLFloatType type = (SQLFloatType)parameter.Type;
                    if (type.Width == 1)
                    {
                        dB2Parameter.DB2Type = IBM.DB2Type.Real;
                    }
                    else
                    {
                        dB2Parameter.DB2Type = IBM.DB2Type.Double;
                    }
                }
                else if (parameter.Type is SQLBinaryType)
                {
                    dB2Parameter.DB2Type = IBM.DB2Type.Blob;
                }
                else if (parameter.Type is SQLTextType)
                {
                    dB2Parameter.DB2Type = IBM.DB2Type.Clob;
                }
                else if (parameter.Type is SQLDateTimeType)
                {
                    dB2Parameter.DB2Type = IBM.DB2Type.Timestamp;
                }
                else if (parameter.Type is SQLDateType)
                {
                    dB2Parameter.DB2Type = IBM.DB2Type.Date;
                }
                else if (parameter.Type is SQLTimeType)
                {
                    dB2Parameter.DB2Type = IBM.DB2Type.Time;
                }
                else if (parameter.Type is SQLGuidType)
                {
                    dB2Parameter.DB2Type = IBM.DB2Type.Char;
                    dB2Parameter.Size    = 24;
                }
                else if (parameter.Type is SQLMoneyType)
                {
                    dB2Parameter.DB2Type   = IBM.DB2Type.Decimal;
                    dB2Parameter.Scale     = 28;
                    dB2Parameter.Precision = 8;
                }
                else
                {
                    throw new ConnectionException(ConnectionException.Codes.UnknownSQLDataType, parameter.Type.GetType().Name);
                }
                _command.Parameters.Add(dB2Parameter);
            }
        }
        private void PrepareParameters()
        {
            // Prepare parameters
            SQLParameter parameter;

            for (int index = 0; index < _parameterIndexes.Length; index++)
            {
                parameter = Parameters[_parameterIndexes[index]];
                ADODB.Parameter aDOParameter = _command.CreateParameter(parameter.Name, ADODB.DataTypeEnum.adInteger, ADODB.ParameterDirectionEnum.adParamInput, 0, Missing.Value);
                switch (parameter.Direction)
                {
                case SQLDirection.In: aDOParameter.Direction = ADODB.ParameterDirectionEnum.adParamInput; break;

                case SQLDirection.Out: aDOParameter.Direction = ADODB.ParameterDirectionEnum.adParamOutput; break;

                case SQLDirection.InOut: aDOParameter.Direction = ADODB.ParameterDirectionEnum.adParamInputOutput; break;

                case SQLDirection.Result: aDOParameter.Direction = ADODB.ParameterDirectionEnum.adParamReturnValue; break;

                default: aDOParameter.Direction = ADODB.ParameterDirectionEnum.adParamUnknown; break;
                }

                if (parameter.Type is SQLStringType)
                {
                    aDOParameter.Type = ADODB.DataTypeEnum.adVarChar;
                    aDOParameter.Size = ((SQLStringType)parameter.Type).Length;
                }
                else if (parameter.Type is SQLBooleanType)
                {
                    aDOParameter.Type = ADODB.DataTypeEnum.adBoolean;
                }
                else if (parameter.Type is SQLIntegerType)
                {
                    switch (((SQLIntegerType)parameter.Type).ByteCount)
                    {
                    case 1: aDOParameter.Type = ADODB.DataTypeEnum.adTinyInt; break;

                    case 2: aDOParameter.Type = ADODB.DataTypeEnum.adSmallInt; break;

                    case 8: aDOParameter.Type = ADODB.DataTypeEnum.adBigInt; break;

                    default: aDOParameter.Type = ADODB.DataTypeEnum.adInteger; break;
                    }
                }
                else if (parameter.Type is SQLNumericType)
                {
                    SQLNumericType type = (SQLNumericType)parameter.Type;
                    aDOParameter.Type         = ADODB.DataTypeEnum.adNumeric;
                    aDOParameter.NumericScale = type.Scale;
                    aDOParameter.Precision    = type.Precision;
                }
                else if (parameter.Type is SQLFloatType)
                {
                    SQLFloatType type = (SQLFloatType)parameter.Type;
                    if (type.Width == 1)
                    {
                        aDOParameter.Type = ADODB.DataTypeEnum.adSingle;
                    }
                    else
                    {
                        aDOParameter.Type = ADODB.DataTypeEnum.adDouble;
                    }
                }
                else if (parameter.Type is SQLBinaryType)
                {
                    aDOParameter.Type        = ADODB.DataTypeEnum.adLongVarBinary;
                    aDOParameter.Attributes |= (int)ADODB.ParameterAttributesEnum.adParamLong;
                    aDOParameter.Size        = 255;
                }
                else if (parameter.Type is SQLByteArrayType)
                {
                    aDOParameter.Type = ADODB.DataTypeEnum.adBinary;
                    aDOParameter.Size = ((SQLByteArrayType)parameter.Type).Length;
                }
                else if (parameter.Type is SQLTextType)
                {
                    aDOParameter.Type = ADODB.DataTypeEnum.adLongVarChar;
                    aDOParameter.Size = 255;
                }
                else if (parameter.Type is SQLDateTimeType)
                {
                    aDOParameter.Type = ADODB.DataTypeEnum.adDBTimeStamp;
                }
                else if (parameter.Type is SQLDateType)
                {
                    aDOParameter.Type = ADODB.DataTypeEnum.adDBDate;
                }
                else if (parameter.Type is SQLTimeType)
                {
                    aDOParameter.Type = ADODB.DataTypeEnum.adDBTime;
                }
                else if (parameter.Type is SQLGuidType)
                {
                    aDOParameter.Type = ADODB.DataTypeEnum.adChar;
                    aDOParameter.Size = 38;
                    //LADOParameter.Type = ADODB.DataTypeEnum.adGUID;
                }
                else if (parameter.Type is SQLMoneyType)
                {
                    aDOParameter.Type = ADODB.DataTypeEnum.adCurrency;
                }
                else
                {
                    throw new ConnectionException(ConnectionException.Codes.UnknownSQLDataType, parameter.Type.GetType().Name);
                }
                _command.Parameters.Append(aDOParameter);
            }
        }
        protected override void PrepareParameters()
        {
            // Prepare parameters
            foreach (SQLParameter parameter in Parameters)
            {
                MySqlParameter mySQLParameter = (MySqlParameter)_command.CreateParameter();
                mySQLParameter.ParameterName = String.Format("@{0}", parameter.Name);
                switch (parameter.Direction)
                {
                case SQLDirection.Out: mySQLParameter.Direction = System.Data.ParameterDirection.Output; break;

                case SQLDirection.InOut: mySQLParameter.Direction = System.Data.ParameterDirection.InputOutput; break;

                case SQLDirection.Result: mySQLParameter.Direction = System.Data.ParameterDirection.ReturnValue; break;

                default: mySQLParameter.Direction = System.Data.ParameterDirection.Input; break;
                }

                if (parameter.Type is SQLStringType)
                {
                    mySQLParameter.DbType = DbType.String;
                    mySQLParameter.Size   = ((SQLStringType)parameter.Type).Length;
                }
                else if (parameter.Type is SQLBooleanType)
                {
                    mySQLParameter.DbType = DbType.Boolean;
                }
                else if (parameter.Type is SQLIntegerType)
                {
                    switch (((SQLIntegerType)parameter.Type).ByteCount)
                    {
                    case 1: mySQLParameter.DbType = DbType.Byte; break;

                    case 2: mySQLParameter.DbType = DbType.Int16; break;

                    case 8: mySQLParameter.DbType = DbType.Int64; break;

                    default: mySQLParameter.DbType = DbType.Int32; break;
                    }
                }
                else if (parameter.Type is SQLNumericType)
                {
                    SQLNumericType type = (SQLNumericType)parameter.Type;
                    mySQLParameter.DbType    = DbType.Decimal;
                    mySQLParameter.Scale     = type.Scale;
                    mySQLParameter.Precision = type.Precision;
                }
                else if (parameter.Type is SQLBinaryType)
                {
                    mySQLParameter.DbType = DbType.Binary;
                }
                else if (parameter.Type is SQLTextType)
                {
                    mySQLParameter.DbType = DbType.String;
                }
                else if (parameter.Type is SQLDateTimeType)
                {
                    mySQLParameter.DbType = DbType.DateTime;
                }
                else if (parameter.Type is SQLDateType)
                {
                    mySQLParameter.DbType = DbType.DateTime;
                }
                else if (parameter.Type is SQLTimeType)
                {
                    mySQLParameter.DbType = DbType.DateTime;
                }
                else if (parameter.Type is SQLGuidType)
                {
                    mySQLParameter.DbType = DbType.Guid;
                }
                else if (parameter.Type is SQLMoneyType)
                {
                    mySQLParameter.DbType = DbType.Currency;
                }
                else
                {
                    throw new ConnectionException(ConnectionException.Codes.UnknownSQLDataType, parameter.Type.GetType().Name);
                }
                _command.Parameters.Add(mySQLParameter);
            }
        }
        protected override void PrepareParameters()
        {
            // Prepare parameters
            SQLParameter LParameter;

            for (int LIndex = 0; LIndex < FParameterIndexes.Length; LIndex++)
            {
                LParameter = Parameters[FParameterIndexes[LIndex]];
                OdbcParameter LODBCParameter = (OdbcParameter)FCommand.CreateParameter();
                LODBCParameter.ParameterName = String.Format("@{0}", LParameter.Name);
                switch (LParameter.Direction)
                {
                case SQLDirection.Out: LODBCParameter.Direction = System.Data.ParameterDirection.Output; break;

                case SQLDirection.InOut: LODBCParameter.Direction = System.Data.ParameterDirection.InputOutput; break;

                case SQLDirection.Result: LODBCParameter.Direction = System.Data.ParameterDirection.ReturnValue; break;

                default: LODBCParameter.Direction = System.Data.ParameterDirection.Input; break;
                }

                if (LParameter.Type is SQLStringType)
                {
                    LODBCParameter.OdbcType = OdbcType.VarChar;
                    LODBCParameter.Size     = ((SQLStringType)LParameter.Type).Length;
                }
                else if (LParameter.Type is SQLBooleanType)
                {
                    LODBCParameter.OdbcType = OdbcType.Bit;
                }
                else if (LParameter.Type is SQLIntegerType)
                {
                    switch (((SQLIntegerType)LParameter.Type).ByteCount)
                    {
                    case 1: LODBCParameter.OdbcType = OdbcType.TinyInt; break;

                    case 2: LODBCParameter.OdbcType = OdbcType.SmallInt; break;

                    case 8: LODBCParameter.OdbcType = OdbcType.BigInt; break;

                    default: LODBCParameter.OdbcType = OdbcType.Int; break;
                    }
                }
                else if (LParameter.Type is SQLNumericType)
                {
                    SQLNumericType LType = (SQLNumericType)LParameter.Type;
                    LODBCParameter.OdbcType  = OdbcType.Int;                    // could not be decimal because of issue with DB2/400
                    LODBCParameter.Scale     = LType.Scale;
                    LODBCParameter.Precision = LType.Precision;
                }
                else if (LParameter.Type is SQLBinaryType)
                {
                    LODBCParameter.OdbcType = OdbcType.Image;
                }
                else if (LParameter.Type is SQLTextType)
                {
                    LODBCParameter.OdbcType = OdbcType.Text;
                }
                else if (LParameter.Type is SQLDateTimeType)
                {
                    LODBCParameter.OdbcType = OdbcType.DateTime;
                }
                else if (LParameter.Type is SQLDateType)
                {
                    LODBCParameter.OdbcType = OdbcType.DateTime;
                }
                else if (LParameter.Type is SQLTimeType)
                {
                    LODBCParameter.OdbcType = OdbcType.DateTime;
                }
                else if (LParameter.Type is SQLGuidType)
                {
                    LODBCParameter.OdbcType = OdbcType.UniqueIdentifier;
                }
                else if (LParameter.Type is SQLMoneyType)
                {
                    LODBCParameter.OdbcType  = OdbcType.Decimal;
                    LODBCParameter.Scale     = 28;
                    LODBCParameter.Precision = 8;
                }
                else
                {
                    throw new ConnectionException(ConnectionException.Codes.UnknownSQLDataType, LParameter.Type.GetType().Name);
                }
                FCommand.Parameters.Add(LODBCParameter);
            }
        }