⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqliteparametercollection.cs

📁 破解的飞信源代码
💻 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 + -