185 lines
6.2 KiB
C#
185 lines
6.2 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
|
|
namespace BllSql
|
|
{
|
|
// Token: 0x02000004 RID: 4
|
|
public sealed class SqlHelperParameterCache
|
|
{
|
|
// Token: 0x06000050 RID: 80 RVA: 0x000020A9 File Offset: 0x000002A9
|
|
private SqlHelperParameterCache()
|
|
{
|
|
}
|
|
|
|
// Token: 0x06000051 RID: 81 RVA: 0x000041DC File Offset: 0x000023DC
|
|
private static SqlParameter[] DiscoverSpParameterSet(SqlConnection connection, string spName, bool includeReturnValueParameter)
|
|
{
|
|
bool flag = connection == null;
|
|
if (flag)
|
|
{
|
|
throw new ArgumentNullException("connection");
|
|
}
|
|
bool flag2 = spName == null || spName.Length == 0;
|
|
if (flag2)
|
|
{
|
|
throw new ArgumentNullException("spName");
|
|
}
|
|
SqlCommand cmd = new SqlCommand(spName, connection);
|
|
cmd.CommandType = CommandType.StoredProcedure;
|
|
connection.Open();
|
|
SqlCommandBuilder.DeriveParameters(cmd);
|
|
connection.Close();
|
|
bool flag3 = !includeReturnValueParameter;
|
|
if (flag3)
|
|
{
|
|
cmd.Parameters.RemoveAt(0);
|
|
}
|
|
SqlParameter[] discoveredParameters = new SqlParameter[cmd.Parameters.Count];
|
|
cmd.Parameters.CopyTo(discoveredParameters, 0);
|
|
foreach (SqlParameter discoveredParameter in discoveredParameters)
|
|
{
|
|
discoveredParameter.Value = DBNull.Value;
|
|
}
|
|
return discoveredParameters;
|
|
}
|
|
|
|
// Token: 0x06000052 RID: 82 RVA: 0x000042AC File Offset: 0x000024AC
|
|
private static SqlParameter[] CloneParameters(SqlParameter[] originalParameters)
|
|
{
|
|
SqlParameter[] clonedParameters = new SqlParameter[originalParameters.Length];
|
|
int i = 0;
|
|
int j = originalParameters.Length;
|
|
while (i < j)
|
|
{
|
|
clonedParameters[i] = (SqlParameter)((ICloneable)originalParameters[i]).Clone();
|
|
i++;
|
|
}
|
|
return clonedParameters;
|
|
}
|
|
|
|
// Token: 0x06000053 RID: 83 RVA: 0x000042F0 File Offset: 0x000024F0
|
|
public static void CacheParameterSet(string connectionString, string commandText, params SqlParameter[] commandParameters)
|
|
{
|
|
bool flag = connectionString == null || connectionString.Length == 0;
|
|
if (flag)
|
|
{
|
|
throw new ArgumentNullException("connectionString");
|
|
}
|
|
bool flag2 = commandText == null || commandText.Length == 0;
|
|
if (flag2)
|
|
{
|
|
throw new ArgumentNullException("commandText");
|
|
}
|
|
string hashKey = connectionString + ":" + commandText;
|
|
SqlHelperParameterCache.paramCache[hashKey] = commandParameters;
|
|
}
|
|
|
|
// Token: 0x06000054 RID: 84 RVA: 0x00004354 File Offset: 0x00002554
|
|
public static SqlParameter[] GetCachedParameterSet(string connectionString, string commandText)
|
|
{
|
|
bool flag = connectionString == null || connectionString.Length == 0;
|
|
if (flag)
|
|
{
|
|
throw new ArgumentNullException("connectionString");
|
|
}
|
|
bool flag2 = commandText == null || commandText.Length == 0;
|
|
if (flag2)
|
|
{
|
|
throw new ArgumentNullException("commandText");
|
|
}
|
|
string hashKey = connectionString + ":" + commandText;
|
|
SqlParameter[] cachedParameters = SqlHelperParameterCache.paramCache[hashKey] as SqlParameter[];
|
|
bool flag3 = cachedParameters == null;
|
|
SqlParameter[] result;
|
|
if (flag3)
|
|
{
|
|
result = null;
|
|
}
|
|
else
|
|
{
|
|
result = SqlHelperParameterCache.CloneParameters(cachedParameters);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
// Token: 0x06000055 RID: 85 RVA: 0x000043DC File Offset: 0x000025DC
|
|
public static SqlParameter[] GetSpParameterSet(string connectionString, string spName)
|
|
{
|
|
return SqlHelperParameterCache.GetSpParameterSet(connectionString, spName, false);
|
|
}
|
|
|
|
// Token: 0x06000056 RID: 86 RVA: 0x000043F8 File Offset: 0x000025F8
|
|
public static SqlParameter[] GetSpParameterSet(string connectionString, string spName, bool includeReturnValueParameter)
|
|
{
|
|
bool flag = connectionString == null || connectionString.Length == 0;
|
|
if (flag)
|
|
{
|
|
throw new ArgumentNullException("connectionString");
|
|
}
|
|
bool flag2 = spName == null || spName.Length == 0;
|
|
if (flag2)
|
|
{
|
|
throw new ArgumentNullException("spName");
|
|
}
|
|
SqlParameter[] spParameterSetInternal;
|
|
using (SqlConnection connection = new SqlConnection(connectionString))
|
|
{
|
|
spParameterSetInternal = SqlHelperParameterCache.GetSpParameterSetInternal(connection, spName, includeReturnValueParameter);
|
|
}
|
|
return spParameterSetInternal;
|
|
}
|
|
|
|
// Token: 0x06000057 RID: 87 RVA: 0x00004474 File Offset: 0x00002674
|
|
internal static SqlParameter[] GetSpParameterSet(SqlConnection connection, string spName)
|
|
{
|
|
return SqlHelperParameterCache.GetSpParameterSet(connection, spName, false);
|
|
}
|
|
|
|
// Token: 0x06000058 RID: 88 RVA: 0x00004490 File Offset: 0x00002690
|
|
internal static SqlParameter[] GetSpParameterSet(SqlConnection connection, string spName, bool includeReturnValueParameter)
|
|
{
|
|
bool flag = connection == null;
|
|
if (flag)
|
|
{
|
|
throw new ArgumentNullException("connection");
|
|
}
|
|
SqlParameter[] spParameterSetInternal;
|
|
using (SqlConnection clonedConnection = (SqlConnection)((ICloneable)connection).Clone())
|
|
{
|
|
spParameterSetInternal = SqlHelperParameterCache.GetSpParameterSetInternal(clonedConnection, spName, includeReturnValueParameter);
|
|
}
|
|
return spParameterSetInternal;
|
|
}
|
|
|
|
// Token: 0x06000059 RID: 89 RVA: 0x000044E8 File Offset: 0x000026E8
|
|
private static SqlParameter[] GetSpParameterSetInternal(SqlConnection connection, string spName, bool includeReturnValueParameter)
|
|
{
|
|
bool flag = connection == null;
|
|
if (flag)
|
|
{
|
|
throw new ArgumentNullException("connection");
|
|
}
|
|
bool flag2 = spName == null || spName.Length == 0;
|
|
if (flag2)
|
|
{
|
|
throw new ArgumentNullException("spName");
|
|
}
|
|
string hashKey = connection.ConnectionString + ":" + spName + (includeReturnValueParameter ? ":include ReturnValue Parameter" : "");
|
|
SqlParameter[] cachedParameters = SqlHelperParameterCache.paramCache[hashKey] as SqlParameter[];
|
|
bool flag3 = cachedParameters == null;
|
|
if (flag3)
|
|
{
|
|
SqlParameter[] spParameters = SqlHelperParameterCache.DiscoverSpParameterSet(connection, spName, includeReturnValueParameter);
|
|
SqlHelperParameterCache.paramCache[hashKey] = spParameters;
|
|
cachedParameters = spParameters;
|
|
}
|
|
return SqlHelperParameterCache.CloneParameters(cachedParameters);
|
|
}
|
|
|
|
// Token: 0x04000001 RID: 1
|
|
private static Hashtable paramCache = Hashtable.Synchronized(new Hashtable());
|
|
}
|
|
}
|