Author: rgrabowski
Date: Tue Jul 18 18:13:06 2006
New Revision: 423321

URL: http://svn.apache.org/viewvc?rev=423321&view=rev
Log:
Merged with trunk revision 423230 for IBATISNET-167, IBATISNET-170, 
IBATISNET-172: using() blocks replaced by try/finally so IDataReader can be 
passed by ref.



Modified:
    ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/AssemblyInfo.cs
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/Commands/DataReaderTransformer.cs
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ArgumentStrategy/SelectGenericListStrategy.cs
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/BaseStrategy.cs
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/MappedStatement.cs
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ReaderAutoMapper.cs
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/AutoMapStrategy.cs
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/DataTableStrategy.cs
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/DictionaryStrategy.cs
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/IResultStrategy.cs
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ListStrategy.cs
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ObjectStrategy.cs
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ResultClassStrategy.cs
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ResultMapStrategy.cs
    
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/SimpleTypeStrategy.cs

Modified: ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/AssemblyInfo.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/AssemblyInfo.cs?rev=423321&r1=423320&r2=423321&view=diff
==============================================================================
--- ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/AssemblyInfo.cs 
(original)
+++ ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/AssemblyInfo.cs Tue 
Jul 18 18:13:06 2006
@@ -33,4 +33,4 @@
 [assembly: AssemblyTitle("IBatisNet.DataMapper")]
 [assembly: AssemblyDescription("Map objects to your SQL statements or stored 
procedures.")]
 
-[assembly: AssemblyVersion("1.5.0")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.5.1")]
\ No newline at end of file

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/Commands/DataReaderTransformer.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/Commands/DataReaderTransformer.cs?rev=423321&r1=423320&r2=423321&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/Commands/DataReaderTransformer.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/Commands/DataReaderTransformer.cs
 Tue Jul 18 18:13:06 2006
@@ -42,7 +42,7 @@
                /// <param name="dbProvider">The databse provider <see 
cref="IDbProvider"/></param>
                public static IDataReader Transform(IDataReader reader, 
IDbProvider dbProvider)
                {
-                       if (!dbProvider.AllowMARS)
+            if (!dbProvider.AllowMARS && !(reader is InMemoryDataReader))
                        {
                                // The underlying reader will be closed.
                                return new InMemoryDataReader(reader);

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ArgumentStrategy/SelectGenericListStrategy.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ArgumentStrategy/SelectGenericListStrategy.cs?rev=423321&r1=423320&r2=423321&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ArgumentStrategy/SelectGenericListStrategy.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ArgumentStrategy/SelectGenericListStrategy.cs
 Tue Jul 18 18:13:06 2006
@@ -61,7 +61,7 @@
             // Get the select statement
             IMappedStatement selectStatement = 
request.MappedStatement.SqlMap.GetMappedStatement(mapping.Select);
            
-            reader = DataReaderTransformer.Transforme(reader, 
request.Session.DataSource.DbProvider);
+            reader = DataReaderTransformer.Transform(reader, 
request.Session.DataSource.DbProvider);
 
             Type[] typeArgs = mapping.MemberType.GetGenericArguments();
             Type genericList = typeof(IList<>);

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/BaseStrategy.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/BaseStrategy.cs?rev=423321&r1=423320&r2=423321&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/BaseStrategy.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/BaseStrategy.cs
 Tue Jul 18 18:13:06 2006
@@ -42,208 +42,6 @@
        /// </summary>
        public abstract class BaseStrategy
        {
-//             /// <summary>
-//             /// Gets the argument value for an argument constructor.
-//             /// </summary>
-//             /// <param name="request">The request.</param>
-//             /// <param name="resultMap">The result map.</param>
-//             /// <param name="mapping">The mapping.</param>
-//             /// <param name="reader">The reader.</param>
-//             /// <returns>The argument value</returns>
-//             protected object GetObjectArgument(RequestScope request, 
ResultMap resultMap, ResultProperty mapping, ref IDataReader reader)
-//             {
-//                     string selectStatement = mapping.Select;
-//
-//                     if (selectStatement.Length == 0 && 
mapping.NestedResultMap == null)
-//                     {
-//                             // If the property is not a 'select' 
ResultProperty 
-//                             //                     or a 'resultMap' 
ResultProperty
-//                             // We have a 'normal' ResultMap
-//
-//                             #region Not a select statement
-//                             if (mapping.TypeHandler == null || 
mapping.TypeHandler is UnknownTypeHandler) // Find the TypeHandler
-//                             {
-//                                     lock(mapping) 
-//                                     {
-//                                             if (mapping.TypeHandler == null 
|| mapping.TypeHandler is UnknownTypeHandler)
-//                                             {
-//                                                     int columnIndex = 0;
-//                                                     if (mapping.ColumnIndex 
== ResultProperty.UNKNOWN_COLUMN_INDEX) 
-//                                                     {
-//                                                             columnIndex = 
reader.GetOrdinal(mapping.ColumnName);
-//                                                     } 
-//                                                     else 
-//                                                     {
-//                                                             columnIndex = 
mapping.ColumnIndex;
-//                                                     }
-//                                                     Type systemType 
=((IDataRecord)reader).GetFieldType(columnIndex);
-//
-//                                                     mapping.TypeHandler = 
request.DataExchangeFactory.TypeHandlerFactory.GetTypeHandler(systemType);
-//                                             }
-//                                     }                                       
-//                             }
-//
-//                             object dataBaseValue = 
mapping.GetDataBaseValue( reader );
-//                             request.IsRowDataFound = request.IsRowDataFound 
|| (dataBaseValue != null);
-//
-//                             return dataBaseValue;
-//
-//                             #endregion
-//                     }
-//                     else if (mapping.NestedResultMap != null) // 
'resultMap' ResultProperty
-//                     {
-//                             object[] parameters = null;
-//                             if (mapping.NestedResultMap.Parameters.Count >0)
-//                             {
-//                                     parameters = new 
object[resultMap.Parameters.Count];
-//                                     // Fill parameters array
-//                                     for(int index=0; index< 
mapping.NestedResultMap.Parameters.Count; index++)
-//                                     {
-//                                             ResultProperty property = 
mapping.NestedResultMap.Parameters[index];
-//                                             parameters[index] = 
property.GetDataBaseValue( reader );
-//                                             request.IsRowDataFound = 
request.IsRowDataFound || (parameters[index] != null);
-//                                     }
-//                             }
-//
-//                             object obj = 
mapping.NestedResultMap.CreateInstanceOfResult(parameters);
-//                             if (FillObjectWithReaderAndResultMap(request, 
reader, mapping.NestedResultMap, obj) == false)
-//                             {
-//                                     obj = null;
-//                             }
-//
-//                             return obj;
-//                     }
-//                     else //'select' ResultProperty 
-//                     {
-//                             // Get the select statement
-//                             IMappedStatement queryStatement = 
request.MappedStatement.SqlMap.GetMappedStatement(selectStatement);
-//                             string paramString = mapping.ColumnName;
-//                             object keys = null;
-//                             bool wasNull = false;
-//
-//                             #region Find Key(s)
-//                             if (paramString.IndexOf(',')>0 || 
paramString.IndexOf('=')>0) // composite parameters key
-//                             {
-//                                     IDictionary keyMap = new Hashtable();
-//                                     keys = keyMap;
-//                                     // define which character is seperating 
fields
-//                                     char[] splitter  = {'=',','};
-//
-//                                     string[] paramTab = 
paramString.Split(splitter);
-//                                     if (paramTab.Length % 2 != 0) 
-//                                     {
-//                                             throw new 
DataMapperException("Invalid composite key string format in 
'"+mapping.PropertyName+". It must be: 
property1=column1,property2=column2,..."); 
-//                                     }
-//                                     IEnumerator enumerator = 
paramTab.GetEnumerator();
-//                                     while (!wasNull && 
enumerator.MoveNext()) 
-//                                     {
-//                                             string hashKey = 
((string)enumerator.Current).Trim();
-//                                             enumerator.MoveNext();
-//                                             object hashValue = 
reader.GetValue( reader.GetOrdinal(((string)enumerator.Current).Trim()) );
-//
-//                                             keyMap.Add(hashKey, hashValue );
-//                                             wasNull = (hashValue == 
DBNull.Value);
-//                                     }
-//                             } 
-//                             else // single parameter key
-//                             {
-//                                     keys = 
reader.GetValue(reader.GetOrdinal(paramString));
-//                                     wasNull = 
reader.IsDBNull(reader.GetOrdinal(paramString));
-//                             }
-//                             #endregion
-//
-//                             if (wasNull) 
-//                             {
-//                                     // set the value of an object property 
to null
-//                                     return null;
-//                             } 
-//                             else // Collection object or .Net object
-//                             {
-//                                     // lazyLoading is not permit for 
argument constructor
-//
-//                                     #region Collection object or .NET object
-//                                     
-//                                     if (mapping.MemberType.BaseType == 
typeof(Array))
-//                                     {
-//                                             reader = 
DataReaderTransformer.Transform(reader, request.Session.DataSource.DbProvider);
-//                                             IList values = 
queryStatement.ExecuteQueryForList(request.Session, keys); 
-//
-//                                             Type elementType = 
mapping.MemberType.GetElementType();
-//                                             Array array = 
Array.CreateInstance(elementType, values.Count);
-//                                             int count = values.Count;
-//                                             for(int i=0;i<count;i++)
-//                                             {
-//                                                     
array.SetValue(values[i],i);
-//                                             }
-//                                             return array;
-//                                     }
-//                                             // Check if the object to Map 
implement 'IList' or is IList type
-//                                             // If yes the ResultProperty is 
map to a IList object
-//                                     else if ( 
typeof(IList).IsAssignableFrom(mapping.MemberType) )
-//                                     {
-//                                             if (mapping.MemberType == 
typeof(IList))
-//                                             {
-//                                                     reader = 
DataReaderTransformer.Transform(reader, request.Session.DataSource.DbProvider);
-//                                                     return 
queryStatement.ExecuteQueryForList(request.Session, keys); 
-//                                             }
-//                                             else // Strongly typed List
-//                                             {
-//                                                     reader = 
DataReaderTransformer.Transform(reader, request.Session.DataSource.DbProvider);
-//                                                     IFactory factory = 
request.ObjectFactory.CreateFactory(mapping.MemberType, Type.EmptyTypes);
-//                                                     object values = 
factory.CreateInstance(null);
-//                                                     
queryStatement.ExecuteQueryForList(request.Session, keys, (IList)values);
-//                                                     return values;
-//                                             }
-//                                     }
-//#if dotnet2
-//                    else if (mapping.MemberType.IsGenericType &&
-//                         mapping.MemberType.GetGenericTypeDefinition() == 
typeof(IList<>)) 
-//                    {
-//                        reader = DataReaderTransformer.Transform(reader, 
request.Session.DataSource.DbProvider);
-//
-//                        Type[] typeArgs = 
mapping.MemberType.GetGenericArguments();
-//                        Type genericList = typeof(IList<>);
-//                        Type constructedType = 
genericList.MakeGenericType(typeArgs);
-//                        Type elementType = 
mapping.MemberType.GetGenericArguments()[0];
-//
-//                        Type mappedStatementType = queryStatement.GetType();
-//
-//                     Type[] typeArguments = { typeof(IDalSession), 
typeof(object) };
-//
-//                        MethodInfo[] mis = 
mappedStatementType.GetMethods(BindingFlags.InvokeMethod | BindingFlags.Public 
| BindingFlags.Instance);
-//                        MethodInfo mi = null;
-//                        foreach (MethodInfo m in mis)
-//                        {
-//                            if (m.IsGenericMethod &&
-//                                m.Name == "ExecuteQueryForList" &&
-//                                m.GetParameters().Length == 2)
-//                            {
-//                                mi = m;
-//                                break;
-//                            }
-//                        }
-//
-//                     MethodInfo miConstructed = 
mi.MakeGenericMethod(elementType);
-//
-//                        // Invoke the method.
-//                        object[] args = { request.Session, keys };
-//                        object values = miConstructed.Invoke(queryStatement, 
args);
-//
-//                        return values;
-//                    }
-//#endif
-//                                     else // The ResultProperty is map to a 
.Net object
-//                                     {
-//                                             reader = 
DataReaderTransformer.Transform(reader, request.Session.DataSource.DbProvider);
-//                                             return 
queryStatement.ExecuteQueryForObject(request.Session, keys);
-//                                     }
-//                                     #endregion
-//
-//                             }
-//                     }
-//             }
-//                     
-
                /// <summary>
                /// Fills the object with reader and result map.
                /// </summary>

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/MappedStatement.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/MappedStatement.cs?rev=423321&r1=423320&r2=423321&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/MappedStatement.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/MappedStatement.cs
 Tue Jul 18 18:13:06 2006
@@ -251,14 +251,23 @@
                        
                        using ( IDbCommand command = request.IDbCommand )
                        {
-                               RaisePreExecuteEvent(request);
-                               using ( IDataReader reader = 
command.ExecuteReader() )
-                               {                               
+                IDataReader reader = command.ExecuteReader();
+                           try
+                           {
                                        if ( reader.Read() )
                                        {
-                                               result = 
_resultStrategy.Process(request, reader, resultObject);                
-                                       }
-                               }
+                        result = _resultStrategy.Process(request, ref reader, 
resultObject);           
+                                       }                               
+                           }
+                catch
+                {
+                    throw;
+                }
+                finally
+                {
+                    reader.Close();
+                    reader.Dispose();
+                }          
 
                                ExecutePostSelect(request);
 
@@ -328,12 +337,22 @@
 
             using (IDbCommand command = request.IDbCommand)
             {
-                using (IDataReader reader = command.ExecuteReader())
+                IDataReader reader = command.ExecuteReader();
+                try 
                 {
                     if (reader.Read())
                     {
-                        result = (T)_resultStrategy.Process(request, reader, 
resultObject);
+                        result = (T)_resultStrategy.Process(request, ref 
reader, resultObject);
                     }
+                           }
+                catch
+                {
+                    throw;
+                }
+                finally
+                {
+                    reader.Close();
+                    reader.Dispose();
                 }
 
                 ExecutePostSelect( request );
@@ -460,9 +479,10 @@
                                {
                                        list = 
_statement.CreateInstanceOfListClass();
                                }
-
-                               using ( IDataReader reader = 
command.ExecuteReader() )
-                               {                       
+                
+                           IDataReader reader = command.ExecuteReader();
+                try            
+                {
                                        // skip results
                                        for (int i = 0; i < skipResults; i++) 
                                        {
@@ -479,7 +499,7 @@
                                                while ( (maxResults == 
NO_MAXIMUM_RESULTS || n < maxResults) 
                                                        && reader.Read() )
                                                {
-                                                       object obj = 
_resultStrategy.Process(request, reader, null);
+                            object obj = _resultStrategy.Process(request, ref 
reader, null);
                                                
                                                        list.Add( obj );
                                                        n++;
@@ -490,13 +510,22 @@
                                                while ( (maxResults == 
NO_MAXIMUM_RESULTS || n < maxResults) 
                                                        && reader.Read() )
                                                {
-                                                       object obj = 
_resultStrategy.Process(request, reader, null);
+                            object obj = _resultStrategy.Process(request, ref 
reader, null);
 
                                                        rowDelegate(obj, 
parameterObject, list);
                                                        n++;
                                                }
                                        }
-                               }
+                           }
+                           catch
+                           {
+                               throw;
+                           }
+                           finally
+                {
+                               reader.Close();
+                               reader.Dispose();                    
+                }
 
                                ExecutePostSelect(request);
 
@@ -521,15 +550,25 @@
 
                        using ( IDbCommand command = request.IDbCommand )
                        {
-                               using ( IDataReader reader = 
command.ExecuteReader() )
-                               {                       
+                               IDataReader reader = command.ExecuteReader();
+                try 
+                {                      
                                        while ( reader.Read() )
                                        {
-                                               object obj = 
_resultStrategy.Process(request, reader, null);
+                        object obj = _resultStrategy.Process(request, ref 
reader, null);
                                
                                                resultObject.Add( obj );
                                        }
-                               }
+                           }
+                catch
+                {
+                    throw;
+                }
+                finally
+                {
+                    reader.Close();
+                    reader.Dispose();
+                }
 
                                ExecutePostSelect(request);
 
@@ -623,8 +662,9 @@
                 {
                     list = _statement.CreateInstanceOfGenericListClass<T>();
                 }
-
-                using (IDataReader reader = command.ExecuteReader())
+                
+                IDataReader reader = command.ExecuteReader();
+                try 
                 {
                     // skip results
                     for (int i = 0; i < skipResults; i++)
@@ -642,7 +682,7 @@
                         while ((maxResults == NO_MAXIMUM_RESULTS || n < 
maxResults)
                             && reader.Read())
                         {
-                            T obj = (T)_resultStrategy.Process(request, 
reader, null);
+                            T obj = (T)_resultStrategy.Process(request, ref 
reader, null);
 
                             list.Add(obj);
                             n++;
@@ -653,12 +693,21 @@
                         while ((maxResults == NO_MAXIMUM_RESULTS || n < 
maxResults)
                             && reader.Read())
                         {
-                            T obj = (T)_resultStrategy.Process(request, 
reader, null);
+                            T obj = (T)_resultStrategy.Process(request, ref 
reader, null);
 
                             rowDelegate(obj, parameterObject, list);
                             n++;
                         }
                     }
+                           }
+                catch
+                {
+                    throw;
+                }
+                finally
+                {
+                    reader.Close();
+                    reader.Dispose();
                 }
 
                 ExecutePostSelect( request );
@@ -684,14 +733,24 @@
 
             using (IDbCommand command = request.IDbCommand)
             {
-                using (IDataReader reader = command.ExecuteReader())
+                IDataReader reader = command.ExecuteReader();
+                try 
                 {
                     while (reader.Read())
                     {
-                        T obj = (T)_resultStrategy.Process(request, reader, 
null);
+                        T obj = (T)_resultStrategy.Process(request, ref 
reader, null);
 
                         resultObject.Add(obj);
                     }
+                           }
+                catch
+                {
+                    throw;
+                }
+                finally
+                {
+                    reader.Close();
+                    reader.Dispose();
                 }
 
                 ExecutePostSelect( request );
@@ -721,7 +780,6 @@
        
                        using ( IDbCommand command = request.IDbCommand )
                        {
-                               RaisePreExecuteEvent(request);
                                rows = command.ExecuteNonQuery();
 
                                ExecutePostSelect(request);
@@ -768,7 +826,6 @@
                        {
                                if (_statement is Insert)
                                {
-                                       RaisePreExecuteEvent(request);
                                        command.ExecuteNonQuery();
                                }
                 else if (_statement is Procedure && (_statement.ResultClass != 
null) &&
@@ -778,7 +835,6 @@
                     returnValueParameter.Direction = 
ParameterDirection.ReturnValue;
                     command.Parameters.Add(returnValueParameter);
                     
-                                       RaisePreExecuteEvent(request);
                     command.ExecuteNonQuery ( );
                     generatedKey = returnValueParameter.Value;
 
@@ -788,7 +844,6 @@
                            else
 
                                {
-                                       RaisePreExecuteEvent(request);
                                        generatedKey = command.ExecuteScalar();
                                        if ( (_statement.ResultClass!=null) && 
                                                
_sqlMap.TypeHandlerFactory.IsSimpleType(_statement.ResultClass) )
@@ -820,15 +875,6 @@
 
                #endregion
 
-               public DataTable ExecuteQueryForDataTable(IDalSession session, 
object parameterObject)
-               {
-                       RequestScope request = 
_statement.Sql.GetRequestScope(this, parameterObject, session);
-
-                       _preparedCommand.Create(request, session, 
this.Statement, parameterObject);
-
-                       return RunQueryForDataTable(request, session, 
parameterObject);
-               }
-
                #region ExecuteQueryForMap
        
                /// <summary>
@@ -879,13 +925,14 @@
 
                        using (IDbCommand command = request.IDbCommand)
                        {
-                               using (IDataReader reader = 
command.ExecuteReader())
-                               {
+                           IDataReader reader = command.ExecuteReader();
+                try 
+                {
                                        if (rowDelegate == null)
                                        {
                                                while (reader.Read() )
                                                {
-                                                       object obj = 
_resultStrategy.Process(request, reader, null);
+                            object obj = _resultStrategy.Process(request, ref 
reader, null);
                                                        object key = 
ObjectProbe.GetMemberValue(obj, keyProperty, 
request.DataExchangeFactory.AccessorFactory);
                                                        object value = obj;
                                                        if (valueProperty != 
null)
@@ -899,7 +946,7 @@
                                        {
                                                while (reader.Read())
                                                {
-                                                       object obj = 
_resultStrategy.Process(request, reader, null);
+                            object obj = _resultStrategy.Process(request, ref 
reader, null);
                                                        object key = 
ObjectProbe.GetMemberValue(obj, 
keyProperty,request.DataExchangeFactory.AccessorFactory);
                                                        object value = obj;
                                                        if (valueProperty != 
null)
@@ -910,32 +957,60 @@
 
                                                }
                                        }
-                               }
+                }
+                catch
+                {
+                    throw;
+                }
+                finally
+                {
+                    reader.Close();
+                    reader.Dispose();
+                }
                        }
                        return map;
 
                }
 
+               
+               #endregion
+
+               public DataTable ExecuteQueryForDataTable(IDalSession session, 
object parameterObject)
+               {
+                       RequestScope request = 
_statement.Sql.GetRequestScope(this, parameterObject, session);
+
+                       _preparedCommand.Create(request, session, 
this.Statement, parameterObject);
+
+                       return RunQueryForDataTable(request, session, 
parameterObject);
+               }
+
                public DataTable RunQueryForDataTable(RequestScope request, 
IDalSession session, object parameterObject)
                {
                        DataTable dataTable = null;
 
                        using (IDbCommand command = request.IDbCommand)
                        {
-                               using (IDataReader reader = 
command.ExecuteReader())
+                               IDataReader reader = command.ExecuteReader();
+                               try
                                {
                                        while (reader.Read() )
                                        {
-                                               dataTable = 
(DataTable)_resultStrategy.Process(request, reader, dataTable);
+                                               dataTable = 
(DataTable)_resultStrategy.Process(request, ref reader, dataTable);
                                        }
                                }
+                               catch
+                               {
+                                       throw;
+                               }
+                               finally
+                               {
+                                       reader.Close();
+                                       reader.Dispose();
+                               }
                        }
 
                        return dataTable;
                }
-               
-               #endregion
-
 
                /// <summary>
                /// Executes the <see cref="PostBindind"/>.
@@ -950,7 +1025,7 @@
                                
PostSelectStrategyFactory.Get(postSelect.Method).Execute(postSelect, request);
                        }
                }
-
+       
                /// <summary>
                /// Raise an event ExecuteEventArgs
                /// (Used when a query is executed)
@@ -992,5 +1067,6 @@
        
 
                #endregion
+
        }
 }

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ReaderAutoMapper.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ReaderAutoMapper.cs?rev=423321&r1=423320&r2=423321&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ReaderAutoMapper.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ReaderAutoMapper.cs
 Tue Jul 18 18:13:06 2006
@@ -101,7 +101,7 @@
                                {
                     ISetAccessorFactory setAccessorFactory = 
dataExchangeFactory.AccessorFactory.SetAccessorFactory;
                     ISetAccessor setAccessor = 
setAccessorFactory.CreateSetAccessor(targetType, membersName[i]);
-                    propertyMap.Add(membersName[i].ToUpper(), setAccessor);
+                    propertyMap.Add(membersName[i], setAccessor);
                                }
 
                                // Get all column Name from the reader
@@ -111,7 +111,7 @@
                                for (int i = 0; i < count; i++) 
                                {
                                        string columnName = 
dataColumn.Rows[i][0].ToString();
-                    ISetAccessor matchedSetAccessor = 
propertyMap[columnName.ToUpper()] as ISetAccessor;
+                    ISetAccessor matchedSetAccessor = propertyMap[columnName] 
as ISetAccessor;
 
                                        ResultProperty property = new 
ResultProperty();
                                        property.ColumnName = columnName;

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/AutoMapStrategy.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/AutoMapStrategy.cs?rev=423321&r1=423320&r2=423321&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/AutoMapStrategy.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/AutoMapStrategy.cs
 Tue Jul 18 18:13:06 2006
@@ -43,7 +43,7 @@
                /// <param name="request">The request.</param>
                /// <param name="reader">The reader.</param>
                /// <param name="resultObject">The result object.</param>
-               private void AutoMapReader(RequestScope request, IDataReader 
reader,ref object resultObject) 
+               private void AutoMapReader(RequestScope request, ref 
IDataReader reader,ref object resultObject) 
                {
                        if (request.Statement.RemapResults)
                        {
@@ -84,7 +84,7 @@
         /// <param name="request">The request.</param>
         /// <param name="reader">The reader.</param>
         /// <param name="resultObject">The result object.</param>
-        public object Process(RequestScope request, IDataReader reader, object 
resultObject)
+        public object Process(RequestScope request, ref IDataReader reader, 
object resultObject)
         {
                        object outObject = resultObject; 
 
@@ -93,7 +93,7 @@
                                outObject = 
request.Statement.CreateInstanceOfResultClass();
                        }
 
-            AutoMapReader(request, reader, ref outObject);
+            AutoMapReader(request, ref reader, ref outObject);
 
                        return outObject;
         }

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/DataTableStrategy.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/DataTableStrategy.cs?rev=423321&r1=423320&r2=423321&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/DataTableStrategy.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/DataTableStrategy.cs
 Tue Jul 18 18:13:06 2006
@@ -47,7 +47,7 @@
                /// <param name="request">The request.</param>
                /// <param name="reader">The reader.</param>
                /// <param name="resultObject">The result object.</param>
-               public object Process(RequestScope request, IDataReader reader, 
object resultObject)
+               public object Process(RequestScope request, ref IDataReader 
reader, object resultObject)
                {
                        object outObject = resultObject; 
 

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/DictionaryStrategy.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/DictionaryStrategy.cs?rev=423321&r1=423320&r2=423321&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/DictionaryStrategy.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/DictionaryStrategy.cs
 Tue Jul 18 18:13:06 2006
@@ -47,7 +47,7 @@
         /// <param name="request">The request.</param>
         /// <param name="reader">The reader.</param>
         /// <param name="resultObject">The result object.</param>
-        public object Process(RequestScope request, IDataReader reader, object 
resultObject)
+        public object Process(RequestScope request, ref IDataReader reader, 
object resultObject)
         {
                        object outObject = resultObject; 
 

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/IResultStrategy.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/IResultStrategy.cs?rev=423321&r1=423320&r2=423321&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/IResultStrategy.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/IResultStrategy.cs
 Tue Jul 18 18:13:06 2006
@@ -40,6 +40,6 @@
         /// <param name="request">The request.</param>
         /// <param name="reader">The reader.</param>
         /// <param name="resultObject">The result object.</param>
-        object Process(RequestScope request, IDataReader reader, object 
resultObject);
+        object Process(RequestScope request, ref IDataReader reader, object 
resultObject);
     }
 }

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ListStrategy.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ListStrategy.cs?rev=423321&r1=423320&r2=423321&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ListStrategy.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ListStrategy.cs
 Tue Jul 18 18:13:06 2006
@@ -47,7 +47,7 @@
         /// <param name="request">The request.</param>
         /// <param name="reader">The reader.</param>
         /// <param name="resultObject">The result object.</param>
-        public object Process(RequestScope request, IDataReader reader, object 
resultObject)
+        public object Process(RequestScope request, ref IDataReader reader, 
object resultObject)
         {
                        object outObject = resultObject; 
 

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ObjectStrategy.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ObjectStrategy.cs?rev=423321&r1=423320&r2=423321&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ObjectStrategy.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ObjectStrategy.cs
 Tue Jul 18 18:13:06 2006
@@ -23,7 +23,6 @@
  
********************************************************************************/
 #endregion
 
-using System.Collections;
 using System.Data;
 using IBatisNet.DataMapper.Configuration.ResultMapping;
 using IBatisNet.DataMapper.Scope;
@@ -45,7 +44,7 @@
         /// <param name="request">The request.</param>
         /// <param name="reader">The reader.</param>
         /// <param name="resultObject">The result object.</param>
-        public object Process(RequestScope request, IDataReader reader, object 
resultObject)
+        public object Process(RequestScope request, ref IDataReader reader, 
object resultObject)
         {
                        object outObject = resultObject; 
 

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ResultClassStrategy.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ResultClassStrategy.cs?rev=423321&r1=423320&r2=423321&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ResultClassStrategy.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ResultClassStrategy.cs
 Tue Jul 18 18:13:06 2006
@@ -61,28 +61,28 @@
                /// <param name="request">The request.</param>
                /// <param name="reader">The reader.</param>
                /// <param name="resultObject">The result object.</param>
-               public object Process(RequestScope request, IDataReader reader, 
object resultObject)
+        public object Process(RequestScope request, ref IDataReader reader, 
object resultObject)
                {
                        // Check if the ResultClass is a 'primitive' Type
                        if 
(request.DataExchangeFactory.TypeHandlerFactory.IsSimpleType(request.Statement.ResultClass))
                        {
-                               return _simpleTypeStrategy.Process(request, 
reader, resultObject);
+                return _simpleTypeStrategy.Process(request, ref reader, 
resultObject);
                        }
                        else if 
(typeof(IDictionary).IsAssignableFrom(request.Statement.ResultClass)) 
                        {
-                               return _dictionaryStrategy.Process(request, 
reader, resultObject);
+                return _dictionaryStrategy.Process(request, ref reader, 
resultObject);
                        }
                        else if 
(typeof(IList).IsAssignableFrom(request.Statement.ResultClass)) 
                        {
-                               return _listStrategy.Process(request, reader, 
resultObject);
+                return _listStrategy.Process(request, ref reader, 
resultObject);
                        }
                        else if 
(typeof(DataTable).IsAssignableFrom(request.Statement.ResultClass))
                        {
-                               return _dataTableStrategy.Process(request, 
reader, resultObject);
+                               return _dataTableStrategy.Process(request, ref 
reader, resultObject);
                        }
                        else
                        {
-                               return _autoMapStrategy.Process(request, 
reader, resultObject);
+                return _autoMapStrategy.Process(request, ref reader, 
resultObject);
                        }
                }
 

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ResultMapStrategy.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ResultMapStrategy.cs?rev=423321&r1=423320&r2=423321&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ResultMapStrategy.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/ResultMapStrategy.cs
 Tue Jul 18 18:13:06 2006
@@ -44,7 +44,7 @@
         /// <param name="request">The request.</param>
         /// <param name="reader">The reader.</param>
         /// <param name="resultObject">The result object.</param>
-        public object Process(RequestScope request, IDataReader reader, object 
resultObject)
+        public object Process(RequestScope request, ref IDataReader reader, 
object resultObject)
         {
             object outObject = resultObject; 
 

Modified: 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/SimpleTypeStrategy.cs
URL: 
http://svn.apache.org/viewvc/ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/SimpleTypeStrategy.cs?rev=423321&r1=423320&r2=423321&view=diff
==============================================================================
--- 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/SimpleTypeStrategy.cs
 (original)
+++ 
ibatis/branches/IBatisNet.DataMapper-QueryForDataTable/MappedStatements/ResultStrategy/SimpleTypeStrategy.cs
 Tue Jul 18 18:13:06 2006
@@ -47,7 +47,7 @@
         /// <param name="request">The request.</param>
         /// <param name="reader">The reader.</param>
         /// <param name="resultObject">The result object.</param>
-        public object Process(RequestScope request, IDataReader reader, object 
resultObject)
+        public object Process(RequestScope request, ref IDataReader reader, 
object resultObject)
         {
                        object outObject = resultObject; 
 


Reply via email to