📄 sqliteparametercollection.cs
字号:
namespace Imps.Client.Data
{
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Reflection;
public sealed class SQLiteParameterCollection : MarshalByRefObject, IList, ICollection, IEnumerable
{
private SQLiteCommand _command;
private List<SQLiteParameter> _parameterList;
private bool _unboundFlag;
internal SQLiteParameterCollection(SQLiteCommand cmd)
{
this._command = cmd;
this._parameterList = new List<SQLiteParameter>();
this._unboundFlag = true;
}
public int Add(SQLiteParameter parameter)
{
int index = -1;
if (!string.IsNullOrEmpty(parameter.ParameterName))
{
index = this.IndexOf(parameter.ParameterName);
}
if (index == -1)
{
index = this._parameterList.get_Count();
this._parameterList.Add(parameter);
}
this.SetParameter(index, parameter);
return index;
}
[EditorBrowsable(EditorBrowsableState.Never)]
public int Add(object value)
{
return this.Add((SQLiteParameter) value);
}
public SQLiteParameter Add(string parameterName, DbType parameterType)
{
SQLiteParameter parameter = new SQLiteParameter(parameterName, parameterType);
this.Add(parameter);
return parameter;
}
public SQLiteParameter Add(string parameterName, DbType parameterType, int parameterSize)
{
SQLiteParameter parameter = new SQLiteParameter(parameterName, parameterType, parameterSize);
this.Add(parameter);
return parameter;
}
public SQLiteParameter Add(string parameterName, DbType parameterType, int parameterSize, string sourceColumn)
{
SQLiteParameter parameter = new SQLiteParameter(parameterName, parameterType, parameterSize, sourceColumn);
this.Add(parameter);
return parameter;
}
public void AddRange(Array values)
{
int length = values.Length;
for (int i = 0; i < length; i++)
{
this.Add((SQLiteParameter) values.GetValue(i));
}
}
public void AddRange(SQLiteParameter[] values)
{
int length = values.Length;
for (int i = 0; i < length; i++)
{
this.Add(values[i]);
}
}
public SQLiteParameter AddWithValue(string parameterName, object value)
{
SQLiteParameter parameter = new SQLiteParameter(parameterName, value);
this.Add(parameter);
return parameter;
}
public void Clear()
{
this._unboundFlag = true;
this._parameterList.Clear();
}
public bool Contains(object value)
{
return this._parameterList.Contains((SQLiteParameter) value);
}
public bool Contains(string parameterName)
{
return (this.IndexOf(parameterName) != -1);
}
public void CopyTo(Array array, int index)
{
throw new NotImplementedException();
}
public IEnumerator GetEnumerator()
{
return this._parameterList.GetEnumerator();
}
private SQLiteParameter GetParameter(int index)
{
return this._parameterList.get_Item(index);
}
private SQLiteParameter GetParameter(string parameterName)
{
return this.GetParameter(this.IndexOf(parameterName));
}
public int IndexOf(object value)
{
return this._parameterList.IndexOf((SQLiteParameter) value);
}
public int IndexOf(string parameterName)
{
int num = this._parameterList.get_Count();
for (int i = 0; i < num; i++)
{
if (string.Compare(parameterName, this._parameterList.get_Item(i).ParameterName, true, CultureInfo.InvariantCulture) == 0)
{
return i;
}
}
return -1;
}
public void Insert(int index, object value)
{
this._unboundFlag = true;
this._parameterList.Insert(index, (SQLiteParameter) value);
}
internal void MapParameters(SQLiteStatement activeStatement)
{
if ((this._unboundFlag && (this._parameterList.get_Count() != 0)) && (this._command._statementList != null))
{
int num = 0;
int num3 = -1;
List<SQLiteParameter>.Enumerator enumerator = this._parameterList.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
int num2;
int num4;
SQLiteParameter p = enumerator.get_Current();
num3++;
string s = p.ParameterName;
if (s == null)
{
s = string.Format(CultureInfo.InvariantCulture, ";{0}", new object[] { num });
num++;
}
bool flag = false;
if (activeStatement == null)
{
num4 = this._command._statementList.get_Count();
}
else
{
num4 = 1;
}
SQLiteStatement statement = activeStatement;
for (num2 = 0; num2 < num4; num2++)
{
flag = false;
if (statement == null)
{
statement = this._command._statementList.get_Item(num2);
}
if ((statement._paramNames != null) && statement.MapParameter(s, p))
{
flag = true;
}
statement = null;
}
if (!flag)
{
s = string.Format(CultureInfo.InvariantCulture, ";{0}", new object[] { num3 });
statement = activeStatement;
for (num2 = 0; num2 < num4; num2++)
{
if (statement == null)
{
statement = this._command._statementList.get_Item(num2);
}
if ((statement._paramNames != null) && statement.MapParameter(s, p))
{
flag = true;
}
statement = null;
}
}
}
}
finally
{
enumerator.Dispose();
}
if (activeStatement == null)
{
this._unboundFlag = false;
}
}
}
public void Remove(object value)
{
this._unboundFlag = true;
this._parameterList.Remove((SQLiteParameter) value);
}
public void RemoveAt(int index)
{
this._unboundFlag = true;
this._parameterList.RemoveAt(index);
}
public void RemoveAt(string parameterName)
{
this.RemoveAt(this.IndexOf(parameterName));
}
private void SetParameter(int index, SQLiteParameter value)
{
this._unboundFlag = true;
this._parameterList.set_Item(index, value);
}
private void SetParameter(string parameterName, SQLiteParameter value)
{
this.SetParameter(this.IndexOf(parameterName), value);
}
internal void Unbind()
{
this._unboundFlag = true;
}
public int Count
{
get
{
return this._parameterList.get_Count();
}
}
public bool IsFixedSize
{
get
{
return false;
}
}
public bool IsReadOnly
{
get
{
return false;
}
}
public bool IsSynchronized
{
get
{
return true;
}
}
public SQLiteParameter this[string parameterName]
{
get
{
return this.GetParameter(parameterName);
}
set
{
this.SetParameter(parameterName, value);
}
}
public SQLiteParameter this[int index]
{
get
{
return this.GetParameter(index);
}
set
{
this.SetParameter(index, value);
}
}
public object SyncRoot
{
get
{
return null;
}
}
object IList.this[int index]
{
get
{
return this.GetParameter(index);
}
set
{
this.SetParameter(index, (SQLiteParameter) value);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -