namespace HW.Utility.Data
|
{
|
using System;
|
using System.Collections;
|
using System.Data;
|
|
internal class CachingMechanism
|
{
|
private Hashtable paramCache = Hashtable.Synchronized(new Hashtable());
|
|
public void AddParameterSetToCache(string connectionString, IDbCommand command, IDataParameter[] parameters)
|
{
|
string commandText = command.CommandText;
|
string str2 = CreateHashKey(connectionString, commandText);
|
this.paramCache[str2] = parameters;
|
}
|
|
public void Clear()
|
{
|
this.paramCache.Clear();
|
}
|
|
public static IDataParameter[] CloneParameters(IDataParameter[] originalParameters)
|
{
|
IDataParameter[] parameterArray = new IDataParameter[originalParameters.Length];
|
int index = 0;
|
int length = originalParameters.Length;
|
while (index < length)
|
{
|
parameterArray[index] = (IDataParameter) ((ICloneable) originalParameters[index]).Clone();
|
index++;
|
}
|
return parameterArray;
|
}
|
|
private static string CreateHashKey(string connectionString, string storedProcedure)
|
{
|
return (connectionString + ":" + storedProcedure);
|
}
|
|
public IDataParameter[] GetCachedParameterSet(string connectionString, IDbCommand command)
|
{
|
string commandText = command.CommandText;
|
string str2 = CreateHashKey(connectionString, commandText);
|
IDataParameter[] originalParameters = (IDataParameter[]) this.paramCache[str2];
|
return CloneParameters(originalParameters);
|
}
|
|
public bool IsParameterSetCached(string connectionString, IDbCommand command)
|
{
|
string str = CreateHashKey(connectionString, command.CommandText);
|
return (this.paramCache[str] != null);
|
}
|
}
|
}
|