protected override void PrepareParameters() { // Prepare parameters SQLParameter parameter; for (int index = 0; index < _parameterIndexes.Length; index++) { parameter = Parameters[_parameterIndexes[index]]; OleDbParameter oLEDBParameter = (OleDbParameter)_command.CreateParameter(); oLEDBParameter.ParameterName = String.Format("@{0}", parameter.Name); switch (parameter.Direction) { case SQLDirection.Out: oLEDBParameter.Direction = System.Data.ParameterDirection.Output; break; case SQLDirection.InOut: oLEDBParameter.Direction = System.Data.ParameterDirection.InputOutput; break; case SQLDirection.Result: oLEDBParameter.Direction = System.Data.ParameterDirection.ReturnValue; break; default: oLEDBParameter.Direction = System.Data.ParameterDirection.Input; break; } if (parameter.Type is SQLStringType) { oLEDBParameter.OleDbType = OleDbType.VarChar; oLEDBParameter.Size = ((SQLStringType)parameter.Type).Length; } else if (parameter.Type is SQLBooleanType) { oLEDBParameter.OleDbType = OleDbType.Boolean; } else if (parameter.Type is SQLByteArrayType) { oLEDBParameter.OleDbType = OleDbType.Binary; oLEDBParameter.Size = ((SQLByteArrayType)parameter.Type).Length; } else if (parameter.Type is SQLIntegerType) { switch (((SQLIntegerType)parameter.Type).ByteCount) { case 1: oLEDBParameter.OleDbType = OleDbType.UnsignedTinyInt; break; case 2: oLEDBParameter.OleDbType = OleDbType.SmallInt; break; case 8: oLEDBParameter.OleDbType = OleDbType.BigInt; break; default: oLEDBParameter.OleDbType = OleDbType.Integer; break; } } else if (parameter.Type is SQLNumericType) { SQLNumericType type = (SQLNumericType)parameter.Type; oLEDBParameter.OleDbType = OleDbType.Numeric; oLEDBParameter.Scale = type.Scale; oLEDBParameter.Precision = type.Precision; } else if (parameter.Type is SQLFloatType) { SQLFloatType type = (SQLFloatType)parameter.Type; if (type.Width == 1) { oLEDBParameter.OleDbType = OleDbType.Single; } else { oLEDBParameter.OleDbType = OleDbType.Double; } } else if (parameter.Type is SQLBinaryType) { oLEDBParameter.OleDbType = OleDbType.LongVarBinary; } else if (parameter.Type is SQLTextType) { oLEDBParameter.OleDbType = OleDbType.LongVarChar; } else if (parameter.Type is SQLDateType) { oLEDBParameter.OleDbType = OleDbType.DBDate; } else if (parameter.Type is SQLTimeType) { oLEDBParameter.OleDbType = OleDbType.Date; } else if (parameter.Type is SQLDateTimeType) { oLEDBParameter.OleDbType = OleDbType.Date; } else if (parameter.Type is SQLGuidType) { oLEDBParameter.OleDbType = OleDbType.Guid; } else if (parameter.Type is SQLMoneyType) { oLEDBParameter.OleDbType = OleDbType.Currency; } else { throw new ConnectionException(ConnectionException.Codes.UnknownSQLDataType, parameter.Type.GetType().Name); } _command.Parameters.Add(oLEDBParameter); } }
protected override void PrepareParameters() { // Prepare parameters SQLParameter parameter; for (int index = 0; index < _parameterIndexes.Length; index++) { parameter = Parameters[_parameterIndexes[index]]; SQLiteParameter sQLiteParameter = (SQLiteParameter)_command.CreateParameter(); sQLiteParameter.ParameterName = String.Format("@{0}", parameter.Name); switch (parameter.Direction) { case SQLDirection.Out: sQLiteParameter.Direction = System.Data.ParameterDirection.Output; break; case SQLDirection.InOut: sQLiteParameter.Direction = System.Data.ParameterDirection.InputOutput; break; case SQLDirection.Result: sQLiteParameter.Direction = System.Data.ParameterDirection.ReturnValue; break; default: sQLiteParameter.Direction = System.Data.ParameterDirection.Input; break; } if (parameter.Type is SQLStringType) { sQLiteParameter.DbType = DbType.String; sQLiteParameter.Size = ((SQLStringType)parameter.Type).Length; } else if (parameter.Type is SQLBooleanType) { sQLiteParameter.DbType = DbType.Boolean; } else if (parameter.Type is SQLByteArrayType) { sQLiteParameter.DbType = DbType.Binary; sQLiteParameter.Size = ((SQLByteArrayType)parameter.Type).Length; } else if (parameter.Type is SQLIntegerType) { switch (((SQLIntegerType)parameter.Type).ByteCount) { case 1: sQLiteParameter.DbType = DbType.Byte; break; case 2: sQLiteParameter.DbType = DbType.Int16; break; case 8: sQLiteParameter.DbType = DbType.Int64; break; default: sQLiteParameter.DbType = DbType.Int32; break; } } else if (parameter.Type is SQLNumericType) { SQLNumericType type = (SQLNumericType)parameter.Type; sQLiteParameter.DbType = DbType.Decimal; //LSQLiteParameter.Scale = LType.Scale; //LSQLiteParameter.Precision = LType.Precision; } else if (parameter.Type is SQLFloatType) { SQLFloatType type = (SQLFloatType)parameter.Type; if (type.Width == 1) { sQLiteParameter.DbType = DbType.Single; } else { sQLiteParameter.DbType = DbType.Double; } } else if (parameter.Type is SQLBinaryType) { sQLiteParameter.DbType = DbType.Binary; } else if (parameter.Type is SQLTextType) { sQLiteParameter.DbType = DbType.String; } else if (parameter.Type is SQLDateType) { sQLiteParameter.DbType = DbType.Date; } else if (parameter.Type is SQLTimeType) { sQLiteParameter.DbType = DbType.Time; } else if (parameter.Type is SQLDateTimeType) { sQLiteParameter.DbType = DbType.DateTime; } else if (parameter.Type is SQLGuidType) { sQLiteParameter.DbType = DbType.Guid; } else if (parameter.Type is SQLMoneyType) { sQLiteParameter.DbType = DbType.Currency; } else { throw new ConnectionException(ConnectionException.Codes.UnknownSQLDataType, parameter.Type.GetType().Name); } _command.Parameters.Add(sQLiteParameter); } }
/// <summary> Creates non-internal parameters on the provider. </summary> protected override void PrepareParameters() { // Prepare parameters for (int index = 0; index < _parameterIndexes.Length; index++) { SQLParameter parameter = Parameters[_parameterIndexes[index]]; SqlParameter mSSQLParameter = (SqlParameter)_command.CreateParameter(); mSSQLParameter.ParameterName = String.Format("@{0}", ConvertParameterName(parameter.Name)); switch (parameter.Direction) { case SQLDirection.Out: mSSQLParameter.Direction = System.Data.ParameterDirection.Output; break; case SQLDirection.InOut: mSSQLParameter.Direction = System.Data.ParameterDirection.InputOutput; break; case SQLDirection.Result: mSSQLParameter.Direction = System.Data.ParameterDirection.ReturnValue; break; default: mSSQLParameter.Direction = System.Data.ParameterDirection.Input; break; } if (parameter.Type is SQLStringType) { mSSQLParameter.SqlDbType = SqlDbType.VarChar; mSSQLParameter.Size = ((SQLStringType)parameter.Type).Length; } else if (parameter.Type is SQLBooleanType) { mSSQLParameter.SqlDbType = SqlDbType.Bit; } else if (parameter.Type is SQLByteArrayType) { mSSQLParameter.SqlDbType = SqlDbType.Binary; mSSQLParameter.Size = ((SQLByteArrayType)parameter.Type).Length; } else if (parameter.Type is SQLIntegerType) { switch (((SQLIntegerType)parameter.Type).ByteCount) { case 1: mSSQLParameter.SqlDbType = SqlDbType.TinyInt; break; case 2: mSSQLParameter.SqlDbType = SqlDbType.SmallInt; break; case 8: mSSQLParameter.SqlDbType = SqlDbType.BigInt; break; default: mSSQLParameter.SqlDbType = SqlDbType.Int; break; } } else if (parameter.Type is SQLNumericType) { SQLNumericType type = (SQLNumericType)parameter.Type; mSSQLParameter.SqlDbType = SqlDbType.Decimal; mSSQLParameter.Scale = type.Scale; mSSQLParameter.Precision = type.Precision; } else if (parameter.Type is SQLFloatType) { SQLFloatType type = (SQLFloatType)parameter.Type; if (type.Width == 1) { mSSQLParameter.SqlDbType = SqlDbType.Real; } else { mSSQLParameter.SqlDbType = SqlDbType.Float; } } else if (parameter.Type is SQLBinaryType) { mSSQLParameter.SqlDbType = SqlDbType.Image; } else if (parameter.Type is SQLTextType) { mSSQLParameter.SqlDbType = SqlDbType.Text; } else if (parameter.Type is SQLDateType) { mSSQLParameter.SqlDbType = SqlDbType.DateTime; } else if (parameter.Type is SQLTimeType) { mSSQLParameter.SqlDbType = SqlDbType.DateTime; } else if (parameter.Type is SQLDateTimeType) { mSSQLParameter.SqlDbType = SqlDbType.DateTime; } else if (parameter.Type is SQLGuidType) { mSSQLParameter.SqlDbType = SqlDbType.UniqueIdentifier; } else if (parameter.Type is SQLMoneyType) { mSSQLParameter.SqlDbType = SqlDbType.Money; } else { throw new ConnectionException(ConnectionException.Codes.UnknownSQLDataType, parameter.Type.GetType().Name); } _command.Parameters.Add(mSSQLParameter); } }
protected override void PrepareParameters() { // Prepare parameters SQLParameter parameter; for (int index = 0; index < _parameterIndexes.Length; index++) { parameter = Parameters[_parameterIndexes[index]]; DbParameter dBParameter = Connection.ProviderFactory.CreateParameter(); dBParameter.ParameterName = String.Format("@{0}", parameter.Name); switch (parameter.Direction) { case SQLDirection.Out: dBParameter.Direction = System.Data.ParameterDirection.Output; break; case SQLDirection.InOut: dBParameter.Direction = System.Data.ParameterDirection.InputOutput; break; case SQLDirection.Result: dBParameter.Direction = System.Data.ParameterDirection.ReturnValue; break; default: dBParameter.Direction = System.Data.ParameterDirection.Input; break; } if (parameter.Type is SQLStringType) { dBParameter.DbType = DbType.String; dBParameter.Size = ((SQLStringType)parameter.Type).Length; } else if (parameter.Type is SQLBooleanType) { dBParameter.DbType = DbType.Boolean; } else if (parameter.Type is SQLByteArrayType) { dBParameter.DbType = DbType.Binary; dBParameter.Size = ((SQLByteArrayType)parameter.Type).Length; } else if (parameter.Type is SQLIntegerType) { switch (((SQLIntegerType)parameter.Type).ByteCount) { case 1: dBParameter.DbType = DbType.Byte; break; case 2: dBParameter.DbType = DbType.Int16; break; case 8: dBParameter.DbType = DbType.Int64; break; default: dBParameter.DbType = DbType.Int32; break; } } else if (parameter.Type is SQLNumericType) { SQLNumericType type = (SQLNumericType)parameter.Type; dBParameter.DbType = DbType.Decimal; // No ability to specify scale and precision generically. Gracias. //LDBParameter.Scale = LType.Scale; //LDBParameter.Precision = LType.Precision; } else if (parameter.Type is SQLFloatType) { SQLFloatType type = (SQLFloatType)parameter.Type; if (type.Width == 1) { dBParameter.DbType = DbType.Single; } else { dBParameter.DbType = DbType.Double; } } else if (parameter.Type is SQLBinaryType) { dBParameter.DbType = DbType.Binary; } else if (parameter.Type is SQLTextType) { dBParameter.DbType = DbType.String; // Hmmmm.... seems like this mapping is wrong. Can't find a clob type in the DbType enumeration. } else if (parameter.Type is SQLDateType) { dBParameter.DbType = DbType.Date; } else if (parameter.Type is SQLTimeType) { dBParameter.DbType = DbType.Time; } else if (parameter.Type is SQLDateTimeType) { dBParameter.DbType = DbType.DateTime; } else if (parameter.Type is SQLGuidType) { dBParameter.DbType = DbType.Guid; } else if (parameter.Type is SQLMoneyType) { dBParameter.DbType = DbType.Currency; } else { throw new ConnectionException(ConnectionException.Codes.UnknownSQLDataType, parameter.Type.GetType().Name); } _command.Parameters.Add(dBParameter); } }
/// <summary> Generates a SQL Server type descriptor given a parameter definition. </summary> private static string GetParamTypeDescriptor(SQLParameter parameter) { if (parameter.Type is SQLStringType) { return("varchar(" + ((SQLStringType)parameter.Type).Length.ToString() + ")"); } else if (parameter.Type is SQLBooleanType) { return("bit"); } else if (parameter.Type is SQLByteArrayType) { return("binary(" + ((SQLByteArrayType)parameter.Type).Length.ToString() + ")"); } else if (parameter.Type is SQLIntegerType) { switch (((SQLIntegerType)parameter.Type).ByteCount) { case 1: return("tinyint"); case 2: return("smallint"); case 8: return("bigint"); default: return("int"); } } else if (parameter.Type is SQLNumericType) { SQLNumericType type = (SQLNumericType)parameter.Type; return("decimal(" + type.Precision.ToString() + "," + type.Scale.ToString() + ")"); } else if (parameter.Type is SQLFloatType) { SQLFloatType type = (SQLFloatType)parameter.Type; if (type.Width == 1) { return("real"); } else { return("float"); } } else if (parameter.Type is SQLBinaryType) { return("image"); } else if (parameter.Type is SQLTextType) { return("text"); // Q: Should this be NText or text } else if ((parameter.Type is SQLDateType) || (parameter.Type is SQLTimeType) || (parameter.Type is SQLDateTimeType)) { return("datetime"); } else if (parameter.Type is SQLGuidType) { return("uniqueidentifier"); } else if (parameter.Type is SQLMoneyType) { return("money"); } else { throw new ConnectionException(ConnectionException.Codes.UnknownSQLDataType, parameter.Type.GetType().Name); } }