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

📄 dbhelper.cs

📁 破解的飞信源代码
💻 CS
📖 第 1 页 / 共 2 页
字号:
                                    SQLiteTransaction transaction = enumerator.get_Current();
                                    try
                                    {
                                        transaction.Rollback();
                                        transaction.Dispose();
                                        continue;
                                    }
                                    catch
                                    {
                                        continue;
                                    }
                                }
                            }
                            finally
                            {
                                enumerator.Dispose();
                            }
                            this._localTransactionCollection.Clear();
                            this._localTransactionCollection = null;
                        }
                    }
                    if (this._connection != null)
                    {
                        this._connection.Close();
                        this._connection.Dispose();
                    }
                }
            }
            catch
            {
            }
            finally
            {
                this._connection = null;
            }
        }

        internal void EnableConnection()
        {
            if (this._connection == null)
            {
                string connectionString = string.Format("Data Source={0};Password={1}", this._dataSource, this._password);
                this._connection = new SQLiteConnection(connectionString);
            }
            if (this._connection.State == ConnectionState.Closed)
            {
                this._connection.Open();
            }
        }

        internal int ExecuteNonQuery(string sql, params object[] parameters)
        {
            this.EnableConnection();
            return this.CreateCommand(sql, parameters).ExecuteNonQuery();
        }

        internal SQLiteDataReader ExecuteReader(string sql, params object[] parameters)
        {
            this.EnableConnection();
            return this.CreateCommand(sql, parameters).ExecuteReader();
        }

        internal int ExecuteScalar(string sql, params object[] parameters)
        {
            this.EnableConnection();
            object obj2 = this.CreateCommand(sql, parameters).ExecuteScalar();
            if (obj2 != null)
            {
                return int.Parse(obj2.ToString());
            }
            return 0;
        }

        ~DbHelper()
        {
            this.Dispose(false);
        }

        public bool InitializeDatabase(string currentUserSid)
        {
            bool flag;
            lock (_locker)
            {
                if (!this.Disposed)
                {
                    this.Dispose();
                }
                string path = Path.Combine(ImpsPathInfo.ApplicationDataDir, currentUserSid);
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                this._dataSource = Path.Combine(path, "history.dat");
                this._password = currentUserSid;
                this._localTransactionCollection = new Dictionary<int, SQLiteTransaction>();
                try
                {
                    if (!File.Exists(this._dataSource))
                    {
                        SQLiteConnection.CreateFile(this._dataSource);
                        string connectionString = string.Format("Data Source={0};Password={1}", this._dataSource, this._password);
                        this._connection = new SQLiteConnection(connectionString);
                        this._connection.SetPassword(this._password);
                    }
                    flag = true;
                }
                catch
                {
                    this.Dispose();
                    File.Delete(this._dataSource);
                    flag = false;
                }
            }
            return flag;
        }

        internal void JoinTransaction()
        {
            lock (_locker)
            {
                this.EnableConnection();
                _refCount++;
                int num = Thread.CurrentThread.get_ManagedThreadId();
                if (!this.LocalTransactionCollection.ContainsKey(num))
                {
                    this.LocalTransactionCollection.Add(num, this._connection.BeginTransaction());
                }
            }
        }

        internal void RollbackTransaction()
        {
            lock (_locker)
            {
                int num = Thread.CurrentThread.get_ManagedThreadId();
                if (this.LocalTransactionCollection.ContainsKey(num))
                {
                    this.LocalTransactionCollection.get_Item(num).Rollback();
                    _refCount--;
                    this.LocalTransactionCollection.Remove(num);
                    if (_refCount == 0)
                    {
                        this._connection.Close();
                    }
                }
            }
        }

        public bool Disposed
        {
            get
            {
                return (this._connection != null);
            }
        }

        public static DbHelper Instance
        {
            get
            {
                return _instance;
            }
        }

        internal bool IsFirstUse
        {
            get
            {
                return this._isFirstUse;
            }
        }

        private Dictionary<int, SQLiteTransaction> LocalTransactionCollection
        {
            get
            {
                lock (_locker)
                {
                    if (this._localTransactionCollection == null)
                    {
                        this._localTransactionCollection = new Dictionary<int, SQLiteTransaction>();
                    }
                    return this._localTransactionCollection;
                }
            }
        }

        internal List<string> Objects
        {
            get
            {
                lock (_locker)
                {
                    List<string> list = new List<string>();
                    using (SQLiteDataReader reader = this.ExecuteReader("SELECT [Name] FROM [SQLITE_MASTER] WHERE ([type] = 'table') OR ([type] = 'view')", null))
                    {
                        while (reader.Read())
                        {
                            list.Add(reader["name"].ToString());
                        }
                    }
                    return list;
                }
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -