Update of /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Data/Common
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv19242
Modified Files:
DbParameters.cs DbProvider.cs IDbProvider.cs
MultiDelegatingDbProvider.cs
Log Message:
SPRNET-760 - StoredProcedure.DeclaredParameters.AddOut("A", OracleType.Cursor); causes double ':' in Oracle10g stored procedure call
Index: DbParameters.cs
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Data/Common/DbParameters.cs,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** DbParameters.cs 13 Oct 2007 23:01:17 -0000 1.12
--- DbParameters.cs 6 Dec 2007 05:48:27 -0000 1.13
***************
*** 119,123 ****
IDbDataParameter parameter = dbCommand.CreateParameter();
! parameter.ParameterName = dbProvider.CreateParameterName(name);
AssignParameterType(parameter, parameterType);
--- 119,129 ----
IDbDataParameter parameter = dbCommand.CreateParameter();
! int start = dbProvider.DbMetadata.ParameterNamePrefix.Length;
!
! if (dbProvider.DbMetadata.UseParameterNamePrefixInParameterCollection == false)
! {
!
! }
! parameter.ParameterName = dbProvider.CreateParameterNameForCollection(name);
AssignParameterType(parameter, parameterType);
***************
*** 250,259 ****
public object GetValue(string name)
{
! return dataParameterCollection[dbProvider.CreateParameterName(name)];
}
public void SetValue(string name, object parameterValue)
{
! IDbDataParameter parameter = dataParameterCollection[dbProvider.CreateParameterName(name)] as IDbDataParameter;
if (parameter != null)
{
--- 256,265 ----
public object GetValue(string name)
{
! return dataParameterCollection[dbProvider.CreateParameterNameForCollection(name)];
}
public void SetValue(string name, object parameterValue)
{
! IDbDataParameter parameter = dataParameterCollection[dbProvider.CreateParameterNameForCollection(name)] as IDbDataParameter;
if (parameter != null)
{
***************
*** 277,282 ****
throw new TypeMismatchDataAccessException("Invalid parameter type specified for parameter name ["
+ parameter.ParameterName + "]. ["
! + parameterType.GetType() + "] is not of expected type ["
! + dbProvider.DbMetadata.ParameterDbType + "]");
}
dbProvider.DbMetadata.ParameterDbTypeProperty.SetValue(parameter, parameterType, null);
--- 283,288 ----
throw new TypeMismatchDataAccessException("Invalid parameter type specified for parameter name ["
+ parameter.ParameterName + "]. ["
! + parameterType.GetType().AssemblyQualifiedName + "] is not of expected type ["
! + dbProvider.DbMetadata.ParameterDbType.AssemblyQualifiedName + "]");
}
dbProvider.DbMetadata.ParameterDbTypeProperty.SetValue(parameter, parameterType, null);
Index: MultiDelegatingDbProvider.cs
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Data/Common/MultiDelegatingDbProvider.cs,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** MultiDelegatingDbProvider.cs 10 Oct 2007 20:59:22 -0000 1.1
--- MultiDelegatingDbProvider.cs 6 Dec 2007 05:48:27 -0000 1.2
***************
*** 120,123 ****
--- 120,129 ----
}
+
+ public string CreateParameterNameForCollection(string name)
+ {
+ return GetTargetProvider().CreateParameterNameForCollection(name);
+ }
+
public IDbMetadata DbMetadata
{
Index: IDbProvider.cs
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Data/Common/IDbProvider.cs,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** IDbProvider.cs 13 Oct 2006 21:59:06 -0000 1.9
--- IDbProvider.cs 6 Dec 2007 05:48:27 -0000 1.10
***************
*** 65,73 ****
/// <returns>A new <see cref="IDbDataParameter"/></returns>
IDbDataParameter CreateParameter();
!
!
string CreateParameterName(string name);
/// <summary>
/// Return metadata information about the database provider
/// </summary>
--- 65,87 ----
/// <returns>A new <see cref="IDbDataParameter"/></returns>
IDbDataParameter CreateParameter();
!
!
! /// <summary>
! /// Creates the name of the parameter in the format appropriate to use inside IDbCommand.CommandText.
! /// </summary>
! /// <remarks>In most cases this adds the parameter prefix to the name passed into this method.</remarks>
! /// <param name="name">The unformatted name of the parameter.</param>
! /// <returns>The parameter name formatted foran IDbCommand.CommandText.</returns>
string CreateParameterName(string name);
/// <summary>
+ /// Creates the name ofthe parameter in the format appropriate for an IDataParameter, i.e. to be
+ /// part of a IDataParameterCollection.
+ /// </summary>
+ /// <param name="name">The unformatted name of the parameter.</param>
+ /// <returns>The parameter name formatted for an IDataParameter</returns>
+ string CreateParameterNameForCollection(string name);
+
+ /// <summary>
/// Return metadata information about the database provider
/// </summary>
***************
*** 87,92 ****
get;
}
!
!
string ExtractError(Exception e);
--- 101,111 ----
get;
}
!
!
! /// <summary>
! /// Extracts the provider specific error code as a string.
! /// </summary>
! /// <param name="e">The data access exception.</param>
! /// <returns>The provider specific error code</returns>
string ExtractError(Exception e);
Index: DbProvider.cs
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data/Data/Common/DbProvider.cs,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** DbProvider.cs 11 Oct 2007 14:55:45 -0000 1.12
--- DbProvider.cs 6 Dec 2007 05:48:27 -0000 1.13
***************
*** 88,91 ****
--- 88,110 ----
}
+ public string CreateParameterNameForCollection(string name)
+ {
+ if (dbMetadata.BindByName)
+ {
+ if (DbMetadata.UseParameterNamePrefixInParameterCollection)
+ {
+ return DbMetadata.ParameterNamePrefix + name;
+ }
+ else
+ {
+ return name;
+ }
+ }
+ else
+ {
+ return DbMetadata.ParameterNamePrefix;
+ }
+ }
+
public IDbMetadata DbMetadata
{
|