SPRNET-1065 - Extraneous connection open in DataSet operations

This commit is contained in:
markpollack
2008-10-23 13:56:18 +00:00
parent 2fd770fc40
commit 340060e272

View File

@@ -329,8 +329,8 @@ namespace Spring.Data.Core
IDbDataAdapter dataAdapter = null;
try
{
dataAdapter = DbProvider.CreateDataAdapter();
//TODO row updated event handling... (SPRNET-1014)
dataAdapter = DbProvider.CreateDataAdapter();
//TODO row updated event handling...
dataAdapter.SelectCommand = DbProvider.CreateCommand();
dataAdapter.SelectCommand.Connection = connectionTxPairToUse.Connection;
//TODO register for warnings on connection.
@@ -1150,8 +1150,7 @@ namespace Spring.Data.Core
#endregion
ITableMappingCollection mappingCollection = DoCreateMappingCollection(null);
return (int)Execute(new DataAdapterFillCallback(dbProvider,
dataTable,
return (int)Execute(new DataAdapterFillCallback(dataTable,
commandType, sql,
mappingCollection, null, null, null));
}
@@ -1173,8 +1172,7 @@ namespace Spring.Data.Core
tableMappingName = "Table";
}
ITableMappingCollection mappingCollection = DoCreateMappingCollection(new string[] { tableMappingName });
return (int)Execute(new DataAdapterFillCallback(dbProvider,
dataTable,
return (int)Execute(new DataAdapterFillCallback(dataTable,
commandType, sql,
mappingCollection, null, null, null));
@@ -1185,10 +1183,9 @@ namespace Spring.Data.Core
{
ValidateFillArguments(dataTable, sql, tableMapping);
ITableMappingCollection mappingCollection = new DataTableMappingCollection();
mappingCollection.Add(tableMapping);
mappingCollection.Add((object)tableMapping);
return (int)Execute(new DataAdapterFillCallback(dbProvider,
dataTable,
return (int)Execute(new DataAdapterFillCallback(dataTable,
commandType, sql,
mappingCollection, null, null, null));
}
@@ -1200,8 +1197,7 @@ namespace Spring.Data.Core
ValidateFillArguments(dataTable, sql, tableMapping);
ITableMappingCollection mappingCollection = new DataTableMappingCollection();
mappingCollection.Add((object)tableMapping);
return (int)Execute(new DataAdapterFillCallback(dbProvider,
dataTable,
return (int)Execute(new DataAdapterFillCallback(dataTable,
commandType, sql,
mappingCollection, setter, null, null));
}
@@ -1216,7 +1212,7 @@ namespace Spring.Data.Core
{
ValidateFillWithParameterArguments(dataTable, sql, parameters);
ITableMappingCollection mappingCollection = DoCreateMappingCollection(null);
return (int)Execute(new DataAdapterFillCallback(dbProvider,dataTable,
return (int)Execute(new DataAdapterFillCallback(dataTable,
commandType, sql,
mappingCollection, null, null,
parameters));
@@ -1232,7 +1228,7 @@ namespace Spring.Data.Core
tableMappingName = "Table";
}
ITableMappingCollection mappingCollection = DoCreateMappingCollection(new string[] { tableMappingName });
return (int)Execute(new DataAdapterFillCallback(dbProvider, dataTable,
return (int)Execute(new DataAdapterFillCallback(dataTable,
commandType, sql,
mappingCollection, null, null, parameters));
}
@@ -1244,7 +1240,7 @@ namespace Spring.Data.Core
ValidateFillWithParameterArguments(dataTable, sql, parameters, tableMapping);
ITableMappingCollection mappingCollection = new DataTableMappingCollection();
mappingCollection.Add((object)tableMapping);
return (int)Execute(new DataAdapterFillCallback(dbProvider, dataTable,
return (int)Execute(new DataAdapterFillCallback(dataTable,
commandType, sql,
mappingCollection, null, null, parameters));
}
@@ -1257,7 +1253,7 @@ namespace Spring.Data.Core
ValidateFillWithParameterArguments(dataTable, sql, parameters, tableMapping);
ITableMappingCollection mappingCollection = new DataTableMappingCollection();
mappingCollection.Add((object)tableMapping);
return (int)Execute(new DataAdapterFillCallback(dbProvider, dataTable,
return (int)Execute(new DataAdapterFillCallback(dataTable,
commandType, sql,
mappingCollection, dataAdapterSetter, null, parameters));
}
@@ -1266,7 +1262,7 @@ namespace Spring.Data.Core
#endregion
#region DataTable Update operations
//TODO conflict options...
public int DataTableUpdateWithCommandBuilder(DataTable dataTable,
CommandType commandType,
@@ -1494,7 +1490,7 @@ namespace Spring.Data.Core
ITableMappingCollection mappingCollection = DoCreateMappingCollection(null);
return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet,
return (int)Execute(new DataAdapterFillCallback(dataSet,
commandType, sql,
mappingCollection, null, null, null));
}
@@ -1517,7 +1513,7 @@ namespace Spring.Data.Core
tableNames = new string[] { "Table" };
}
ITableMappingCollection mappingCollection = DoCreateMappingCollection(tableNames);
return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet,
return (int)Execute(new DataAdapterFillCallback(dataSet,
commandType, sql,
mappingCollection, null, null, null));
}
@@ -1527,7 +1523,7 @@ namespace Spring.Data.Core
ITableMappingCollection tableMapping)
{
ValidateFillArguments(dataSet, sql, tableMapping);
return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet,
return (int)Execute(new DataAdapterFillCallback(dataSet,
commandType, sql,
tableMapping, null, null, null));
@@ -1538,7 +1534,7 @@ namespace Spring.Data.Core
IDataAdapterSetter setter)
{
ValidateFillArguments(dataSet, sql, tableMapping);
return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet,
return (int)Execute(new DataAdapterFillCallback(dataSet,
commandType, sql,
tableMapping, setter, null, null));
@@ -1550,7 +1546,7 @@ namespace Spring.Data.Core
IDataSetFillLifecycleProcessor fillLifecycleProcessor)
{
ValidateFillArguments(dataSet, sql, tableMapping);
return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet,
return (int)Execute(new DataAdapterFillCallback(dataSet,
commandType, sql,
tableMapping, setter, fillLifecycleProcessor, null));
@@ -1565,7 +1561,7 @@ namespace Spring.Data.Core
{
ValidateFillWithParameterArguments(dataSet, sql, parameters);
ITableMappingCollection mappingCollection = DoCreateMappingCollection(null);
return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet,
return (int)Execute(new DataAdapterFillCallback(dataSet,
commandType, sql,
mappingCollection, null, null,
parameters));
@@ -1581,7 +1577,7 @@ namespace Spring.Data.Core
tableNames = new string[] { "Table" };
}
ITableMappingCollection tableMapping = DoCreateMappingCollection(tableNames);
return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet,
return (int)Execute(new DataAdapterFillCallback(dataSet,
commandType, sql,
tableMapping, null, null, parameters));
@@ -1592,7 +1588,7 @@ namespace Spring.Data.Core
ITableMappingCollection tableMapping)
{
ValidateFillWithParameterArguments(dataSet, sql, parameters, tableMapping);
return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet,
return (int)Execute(new DataAdapterFillCallback(dataSet,
commandType, sql,
tableMapping, null, null, parameters));
}
@@ -1603,7 +1599,7 @@ namespace Spring.Data.Core
IDataAdapterSetter dataAdapterSetter)
{
ValidateFillWithParameterArguments(dataSet, sql, parameters, tableMapping);
return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet,
return (int)Execute(new DataAdapterFillCallback(dataSet,
commandType, sql,
tableMapping, dataAdapterSetter, null, parameters));
}
@@ -1615,7 +1611,7 @@ namespace Spring.Data.Core
IDataSetFillLifecycleProcessor fillLifecycleProcessor)
{
ValidateFillWithParameterArguments(dataSet, sql, parameters, tableMapping);
return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet,
return (int)Execute(new DataAdapterFillCallback(dataSet,
commandType, sql,
tableMapping, dataAdapterSetter, fillLifecycleProcessor, parameters));
}
@@ -1685,7 +1681,7 @@ namespace Spring.Data.Core
ITableMappingCollection mappingCollection = DoCreateMappingCollection(new string[] { tableName });
return (int)Execute(new DataAdapterUpdateCallback(DbProvider, dataSet,
return (int)Execute(new DataAdapterUpdateCallback(dataSet,
mappingCollection,
insertCommand,
updateCommand,
@@ -1726,7 +1722,7 @@ namespace Spring.Data.Core
}
ITableMappingCollection mappingCollection = DoCreateMappingCollection(new string[] { tableName });
int returnVal = (int)Execute(new DataAdapterUpdateCallback(DbProvider, dataSet, mappingCollection,
int returnVal = (int)Execute(new DataAdapterUpdateCallback(dataSet, mappingCollection,
insertCommand, updateCommand, deleteCommand, null));
if (insertSql != null)
@@ -1755,7 +1751,7 @@ namespace Spring.Data.Core
{
ValidateUpdateArguments(dataSet, tableName);
ITableMappingCollection tableMapping = DoCreateMappingCollection(new string[] { tableName });
return (int)Execute(new DataAdapterUpdateCallback(DbProvider, dataSet,
return (int)Execute(new DataAdapterUpdateCallback(dataSet,
tableMapping,
insertCommand,
updateCommand,
@@ -1771,7 +1767,7 @@ namespace Spring.Data.Core
IDbCommand deleteCommand)
{
ValidateUpdateArguments(dataSet, tableMapping);
return (int)Execute(new DataAdapterUpdateCallback(DbProvider, dataSet,
return (int)Execute(new DataAdapterUpdateCallback(dataSet,
tableMapping,
insertCommand,
updateCommand,
@@ -1787,7 +1783,7 @@ namespace Spring.Data.Core
IDataAdapterSetter dataAdapterSetter)
{
ValidateUpdateArguments(dataSet, tableMapping);
return (int)Execute(new DataAdapterUpdateCallback(DbProvider, dataSet,
return (int)Execute(new DataAdapterUpdateCallback(dataSet,
tableMapping,
insertCommand,
updateCommand,
@@ -1877,7 +1873,7 @@ namespace Spring.Data.Core
ParameterUtils.CopyParameters(deleteCommand, deleteParameters);
}
int returnVal = (int)Execute(new DataAdapterUpdateCallback(DbProvider, dataTable, mappingCollection,
int returnVal = (int)Execute(new DataAdapterUpdateCallback(dataTable, mappingCollection,
insertCommand, updateCommand, deleteCommand, null));
if (insertSql != null)
@@ -2165,11 +2161,9 @@ namespace Spring.Data.Core
private ITableMappingCollection mappingCollection;
private IDataAdapterSetter dataAdapterSetter;
private IDataSetFillLifecycleProcessor fillLifecycleProcessor;
private IDbParameters parameters;
private IDbProvider dbProvider;
private IDbParameters parameters;
public DataAdapterFillCallback(IDbProvider dbProvider,
DataSet dataSet,
public DataAdapterFillCallback(DataSet dataSet,
CommandType commandType,
string sql,
ITableMappingCollection mappingCollection,
@@ -2177,8 +2171,7 @@ namespace Spring.Data.Core
IDataSetFillLifecycleProcessor fillLifecycleProcessor,
IDbParameters parameters)
{
containsDataSet = true;
this.dbProvider = dbProvider;
containsDataSet = true;
this.dataSet = dataSet;
this.commandType = commandType;
this.sql = sql;
@@ -2186,10 +2179,9 @@ namespace Spring.Data.Core
this.dataAdapterSetter = dataAdapterSetter;
this.fillLifecycleProcessor = fillLifecycleProcessor;
this.parameters = parameters;
}
public DataAdapterFillCallback(IDbProvider dbProvider,
DataTable dataTable,
}
public DataAdapterFillCallback(DataTable dataTable,
CommandType commandType,
string sql,
ITableMappingCollection mappingCollection,
@@ -2197,8 +2189,7 @@ namespace Spring.Data.Core
IDataSetFillLifecycleProcessor fillLifecycleProcessor,
IDbParameters parameters)
{
containsDataSet = false;
this.dbProvider = dbProvider;
containsDataSet = false;
this.dataTable = dataTable;
this.commandType = commandType;
this.sql = sql;
@@ -2211,14 +2202,9 @@ namespace Spring.Data.Core
public object DoInDataAdapter(IDbDataAdapter dataAdapter)
{
ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(dbProvider);
dataAdapter.SelectCommand.Connection = connectionTxPairToUse.Connection;
dataAdapter.SelectCommand.Transaction = connectionTxPairToUse.Transaction;
{
dataAdapter.SelectCommand.CommandType = commandType;
dataAdapter.SelectCommand.CommandText = sql;
dataAdapter.SelectCommand.CommandText = sql;
//TODO investigate performance of cloning....would need to change signature to
// DataTableMapping[] otherwise...
foreach (DataTableMapping dataTableMapping in mappingCollection)
@@ -2277,13 +2263,16 @@ namespace Spring.Data.Core
private IDbCommand insertCommand;
private IDbCommand updateCommand;
private IDbCommand deleteCommand;
private IDataAdapterSetter dataAdapterSetter;
private IDbProvider dbProvider;
private IDataAdapterSetter dataAdapterSetter;
public DataAdapterUpdateCallback(IDbProvider dbProvider, DataSet dataSet, ITableMappingCollection mappingCollection, IDbCommand insertCommand, IDbCommand updateCommand, IDbCommand deleteCommand, IDataAdapterSetter dataAdapterSetter)
public DataAdapterUpdateCallback(DataSet dataSet,
ITableMappingCollection mappingCollection,
IDbCommand insertCommand,
IDbCommand updateCommand,
IDbCommand deleteCommand,
IDataAdapterSetter dataAdapterSetter)
{
containsDataSet = true;
this.dbProvider = dbProvider;
containsDataSet = true;
this.dataSet = dataSet;
this.mappingCollection = mappingCollection;
this.insertCommand = insertCommand;
@@ -2292,10 +2281,14 @@ namespace Spring.Data.Core
this.dataAdapterSetter = dataAdapterSetter;
}
public DataAdapterUpdateCallback(IDbProvider dbProvider, DataTable dataTable, ITableMappingCollection mappingCollection, IDbCommand insertCommand, IDbCommand updateCommand, IDbCommand deleteCommand, IDataAdapterSetter dataAdapterSetter)
public DataAdapterUpdateCallback(DataTable dataTable,
ITableMappingCollection mappingCollection,
IDbCommand insertCommand,
IDbCommand updateCommand,
IDbCommand deleteCommand,
IDataAdapterSetter dataAdapterSetter)
{
containsDataSet = false;
this.dbProvider = dbProvider;
containsDataSet = false;
this.dataTable = dataTable;
this.mappingCollection = mappingCollection;
this.insertCommand = insertCommand;
@@ -2306,11 +2299,7 @@ namespace Spring.Data.Core
#region IDataAdapterCallback Members
public object DoInDataAdapter(IDbDataAdapter dataAdapter)
{
ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(dbProvider);
dataAdapter.SelectCommand.Connection = connectionTxPairToUse.Connection;
dataAdapter.SelectCommand.Transaction = connectionTxPairToUse.Transaction;
{
//TODO - did not make copies of parameters...
if (insertCommand == null && updateCommand == null && deleteCommand == null)
{