From: Michael D. <mik...@us...> - 2004-06-25 20:31:41
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20613/NHibernate/SqlCommand Modified Files: Parameter.cs ParameterLength.cs ParameterPrecisionScale.cs SqlString.cs Log Message: The IDbCommand is now built by the SqlString and not the IPreparer. SqlString and Parameter* depends on IDriver not IConnectionProvider now. Index: Parameter.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/Parameter.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Parameter.cs 27 May 2004 13:55:39 -0000 1.6 --- Parameter.cs 25 Jun 2004 20:31:32 -0000 1.7 *************** *** 2,6 **** using System.Data; ! using NHibernate.Connection; using NHibernate.Engine; using NHibernate.SqlTypes; --- 2,6 ---- using System.Data; ! using NHibernate.Driver; using NHibernate.Engine; using NHibernate.SqlTypes; *************** *** 36,45 **** set {this.tableAlias = value;} } - - [Obsolete("This does not handle quoted identifiers - going to use a number based name.")] - public string GetSqlName(IConnectionProvider provider){ - - return provider.Driver.FormatNameForSql(tableAlias, name); - } /// <summary> --- 36,39 ---- *************** *** 47,61 **** /// format for the SQL in the CommandText. /// </summary> ! /// <param name="provider">The ConnectionProvider that contains the Dialect.</param> /// <param name="name">The name to format for SQL.</param> /// <returns>A valid SQL string for this Parameter.</returns> ! public string GetSqlName(IConnectionProvider provider, string name) { ! return provider.Driver.FormatNameForSql(name); ! } ! ! [Obsolete("This does not handle quoted identifiers - going to use a number based name.")] ! public string GetParameterName(IConnectionProvider provider){ ! return provider.Driver.FormatNameForParameter(tableAlias, name); } --- 41,50 ---- /// format for the SQL in the CommandText. /// </summary> ! /// <param name="driver">The Driver that knows how to format the name.</param> /// <param name="name">The name to format for SQL.</param> /// <returns>A valid SQL string for this Parameter.</returns> ! public string GetSqlName(IDriver driver, string name) { ! return driver.FormatNameForSql(name); } *************** *** 64,90 **** /// format for the IDbDataParameter.Name /// </summary> ! /// <param name="provider">The ConnectionProvider that contains the Dialect.</param> /// <param name="name">The name to format for the IDbDataParameter.</param> /// <returns>A valid IDbDataParameter Name for this Parameter.</returns> ! public string GetParameterName(IConnectionProvider provider, string name) { ! return provider.Driver.FormatNameForParameter(name); } ! [Obsolete("This does not handle quoted identifiers - going to use a number based name.")] ! public virtual IDbDataParameter GetIDbDataParameter(IDbCommand command, IConnectionProvider provider) ! { ! IDbDataParameter param = command.CreateParameter(); ! param.DbType = dbType; ! param.ParameterName = GetParameterName(provider); ! ! return param; ! } ! ! public virtual IDbDataParameter GetIDbDataParameter(IDbCommand command, IConnectionProvider provider, string name) { IDbDataParameter param = command.CreateParameter(); param.DbType = dbType; ! param.ParameterName = GetParameterName(provider, name); return param; --- 53,69 ---- /// format for the IDbDataParameter.Name /// </summary> ! /// <param name="driver">The Driver that knows how to format the name.</param> /// <param name="name">The name to format for the IDbDataParameter.</param> /// <returns>A valid IDbDataParameter Name for this Parameter.</returns> ! public string GetParameterName(IDriver driver, string name) { ! return driver.FormatNameForParameter(name); } ! public virtual IDbDataParameter GetIDbDataParameter(IDbCommand command, IDriver driver, string name) { IDbDataParameter param = command.CreateParameter(); param.DbType = dbType; ! param.ParameterName = GetParameterName(driver, name); return param; Index: SqlString.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/SqlString.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** SqlString.cs 25 May 2004 17:14:27 -0000 1.6 --- SqlString.cs 25 Jun 2004 20:31:32 -0000 1.7 *************** *** 1,5 **** --- 1,8 ---- using System; + using System.Data; using System.Text; + using NHibernate.Driver; + namespace NHibernate.SqlCommand { *************** *** 49,53 **** } ! #region object Members --- 52,93 ---- } ! /// <summary> ! /// Builds an IDbCommand using the Driver to help format the Sql and Parameters ! /// </summary> ! /// <param name="driver">The Driver to use to create the Sql and Parameters.</param> ! /// <returns>An IDbCommand with its CommandText and ParametersCollection populated.</returns> ! public IDbCommand BuildCommand(IDriver driver) ! { ! int paramIndex = 0; ! IDbCommand cmd = driver.CreateCommand(); ! ! StringBuilder builder = new StringBuilder(sqlParts.Length * 15); ! for(int i = 0; i < sqlParts.Length; i++) ! { ! object part = sqlParts[i]; ! Parameter parameter = part as Parameter; ! ! if(parameter!=null) ! { ! string paramName = "p" + paramIndex; ! builder.Append( parameter.GetSqlName(driver, paramName) ); ! IDbDataParameter dbParam = parameter.GetIDbDataParameter(cmd, driver, paramName); ! cmd.Parameters.Add(dbParam); ! ! paramIndex++; ! } ! else ! { ! builder.Append((string)part); ! } ! } ! ! cmd.CommandText = builder.ToString(); ! ! return cmd; ! } ! ! ! #region System.Object Members Index: ParameterLength.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/ParameterLength.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ParameterLength.cs 25 May 2004 17:14:27 -0000 1.4 --- ParameterLength.cs 25 Jun 2004 20:31:32 -0000 1.5 *************** *** 2,35 **** using System.Data; ! using NHibernate.Connection; using NHibernate.Engine; using NHibernate.Type; ! namespace NHibernate.SqlCommand { ! /// <summary> /// Extension to the Parameter class that supports Parameters with /// a Length /// </summary> ! public class ParameterLength : Parameter { private int length; ! public int Length { get {return length;} set {length = value;} } ! [Obsolete("This does not handle quoted identifiers - going to use a number based name.")] ! public override IDbDataParameter GetIDbDataParameter(IDbCommand command, IConnectionProvider provider) ! { ! IDbDataParameter param = base.GetIDbDataParameter (command, provider); ! param.Size = length; ! ! return param; ! } ! ! public override IDbDataParameter GetIDbDataParameter(IDbCommand command, IConnectionProvider provider, string name) { ! IDbDataParameter param = base.GetIDbDataParameter (command, provider, name); param.Size = length; --- 2,28 ---- using System.Data; ! using NHibernate.Driver; using NHibernate.Engine; using NHibernate.Type; ! namespace NHibernate.SqlCommand ! { /// <summary> /// Extension to the Parameter class that supports Parameters with /// a Length /// </summary> ! public class ParameterLength : Parameter ! { private int length; ! public int Length ! { get {return length;} set {length = value;} } ! public override IDbDataParameter GetIDbDataParameter(IDbCommand command, IDriver driver, string name) { ! IDbDataParameter param = base.GetIDbDataParameter (command, driver, name); param.Size = length; *************** *** 37,45 **** } ! #region object Members public override bool Equals(object obj) { ! if(base.Equals(obj)) { ParameterLength rhs; --- 30,39 ---- } ! #region System.Object Members public override bool Equals(object obj) { ! if(base.Equals(obj)) ! { ParameterLength rhs; *************** *** 51,55 **** return this.Length.Equals(rhs.Length); } ! else { return false; } --- 45,50 ---- return this.Length.Equals(rhs.Length); } ! else ! { return false; } Index: ParameterPrecisionScale.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/SqlCommand/ParameterPrecisionScale.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ParameterPrecisionScale.cs 25 May 2004 17:14:27 -0000 1.4 --- ParameterPrecisionScale.cs 25 Jun 2004 20:31:32 -0000 1.5 *************** *** 2,42 **** using System.Data; ! using NHibernate.Connection; using NHibernate.Engine; using NHibernate.Type; ! namespace NHibernate.SqlCommand { ! /// <summary> /// Extension to the Parameter class that supports Parameters with /// a Precision and a Scale /// </summary> ! public class ParameterPrecisionScale : Parameter { private byte precision; private byte scale; ! public byte Precision { get {return precision;} set {precision = value;} } ! public byte Scale { get {return scale;} set {scale = value;} } ! [Obsolete("This does not handle quoted identifiers - going to use a number based name.")] ! public override IDbDataParameter GetIDbDataParameter(IDbCommand command, IConnectionProvider provider) ! { ! IDbDataParameter param = base.GetIDbDataParameter (command, provider); ! param.Precision = precision; ! param.Scale = scale; ! ! return param; ! } ! ! public override IDbDataParameter GetIDbDataParameter(IDbCommand command, IConnectionProvider provider, string name) { ! IDbDataParameter param = base.GetIDbDataParameter (command, provider, name); param.Precision = precision; param.Scale = scale; --- 2,35 ---- using System.Data; ! using NHibernate.Driver; using NHibernate.Engine; using NHibernate.Type; ! namespace NHibernate.SqlCommand ! { /// <summary> /// Extension to the Parameter class that supports Parameters with /// a Precision and a Scale /// </summary> ! public class ParameterPrecisionScale : Parameter ! { private byte precision; private byte scale; ! public byte Precision ! { get {return precision;} set {precision = value;} } ! public byte Scale ! { get {return scale;} set {scale = value;} } ! public override IDbDataParameter GetIDbDataParameter(IDbCommand command, IDriver driver, string name) { ! IDbDataParameter param = base.GetIDbDataParameter (command, driver, name); param.Precision = precision; param.Scale = scale; *************** *** 45,53 **** } ! #region object Members public override bool Equals(object obj) { ! if(base.Equals(obj)) { ParameterPrecisionScale rhs; --- 38,47 ---- } ! #region System.Object Members public override bool Equals(object obj) { ! if(base.Equals(obj)) ! { ParameterPrecisionScale rhs; *************** *** 60,64 **** && this.Scale==rhs.Scale; } ! else { return false; } --- 54,59 ---- && this.Scale==rhs.Scale; } ! else ! { return false; } |