Revision: 4597
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4597&view=rev
Author: fabiomaulo
Date: 2009-07-09 15:31:05 +0000 (Thu, 09 Jul 2009)
Log Message:
-----------
Merge r4596 (fix NH-1872 by Erik Petersen)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Driver/OdbcDriver.cs
Modified: trunk/nhibernate/src/NHibernate/Driver/OdbcDriver.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Driver/OdbcDriver.cs 2009-07-09 15:27:05 UTC (rev 4596)
+++ trunk/nhibernate/src/NHibernate/Driver/OdbcDriver.cs 2009-07-09 15:31:05 UTC (rev 4597)
@@ -1,6 +1,8 @@
using System;
using System.Data;
using System.Data.Odbc;
+using NHibernate.SqlCommand;
+using NHibernate.SqlTypes;
namespace NHibernate.Driver
{
@@ -40,5 +42,39 @@
{
get { return String.Empty; }
}
+
+ private static void SetVariableLengthParameterSize(IDbDataParameter dbParam, SqlType sqlType)
+ {
+ // Override the defaults using data from SqlType.
+ if (sqlType.LengthDefined)
+ {
+ dbParam.Size = sqlType.Length;
+ }
+
+ if (sqlType.PrecisionDefined)
+ {
+ dbParam.Precision = sqlType.Precision;
+ dbParam.Scale = sqlType.Scale;
+ }
+ }
+
+ public static void SetParameterSizes(IDataParameterCollection parameters, SqlType[] parameterTypes)
+ {
+ for (int i = 0; i < parameters.Count; i++)
+ {
+ SetVariableLengthParameterSize((IDbDataParameter)parameters[i], parameterTypes[i]);
+ }
+ }
+
+ public override IDbCommand GenerateCommand(CommandType type, SqlString sqlString, SqlType[] parameterTypes)
+ {
+ IDbCommand command = base.GenerateCommand(type, sqlString, parameterTypes);
+ if (IsPrepareSqlEnabled)
+ {
+ SetParameterSizes(command.Parameters, parameterTypes);
+ }
+ return command;
+ }
+
}
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|