Exemplo n.º 1
0
        /// <summary>
        /// 获取所有分中心信息
        /// </summary>
        public List <CEntityUser> QueryAllUser()
        {
            var result  = new List <CEntityUser>();
            var sqlConn = CDBManager.GetInstacne().GetConnection();

            try
            {
                m_mutexWriteToDB.WaitOne();         // 取对数据库的唯一访问权
                m_mutexDataTable.WaitOne();         // 获取内存表的访问权
                sqlConn.Open();                     // 建立数据库连接

                String        sqlStr = "select * from " + CT_TableName;
                SqlCommand    sqlCmd = new SqlCommand(sqlStr, sqlConn);
                SqlDataReader reader = sqlCmd.ExecuteReader();

                //  处理查询结果
                while (reader.Read())
                {
                    try
                    {
                        var user = new CEntityUser();
                        user.UserID        = (Int32)reader[CN_UserID];
                        user.UserName      = (String)reader[CN_UserName];
                        user.Password      = (String)reader[CN_Password];
                        user.Administrator = (Boolean)reader[CN_Administrator];
                        result.Add(user);
                    }
                    catch
                    {
                    }
                }
            }
            catch (Exception exp)
            {
                throw exp;
            }
            finally
            {
                sqlConn.Close();                    //  关闭数据库连接
                m_mutexDataTable.ReleaseMutex();    //  释放内存表的访问权
                m_mutexWriteToDB.ReleaseMutex();    //  释放数据库的访问权
            }
            return(result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 获取更新过的数据,包括增加的用户记录
        /// </summary>
        private void GetUpdatedData()
        {
            // 标记为删除的就不需要添加的修改或者添加的分中心中了
            List <int> listEditRows = new List <int>();

            foreach (int item in base.m_listEditedRows)
            {
                if (!m_listMaskedDeletedRows.Contains(item))
                {
                    listEditRows.Add(item);
                }
            }
            // 将去重后的项赋给编辑项
            base.m_listEditedRows = listEditRows;
            for (int i = 0; i < base.m_listEditedRows.Count; ++i)
            {
                CEntityUser user = new CEntityUser();
                user.UserID   = Int32.Parse(base.Rows[m_listEditedRows[i]].Cells[CS_UserID].Value.ToString());
                user.UserName = base.Rows[m_listEditedRows[i]].Cells[CS_UserName].Value.ToString();
                user.Password = base.Rows[m_listEditedRows[i]].Cells[CS_PassWord].Value.ToString();
                string administrator = base.Rows[m_listEditedRows[i]].Cells[CS_Authority].Value.ToString();
                if (administrator.Equals(CS_Administrator))
                {
                    user.Administrator = true;
                }
                else
                {
                    user.Administrator = false;
                }
                if (user.UserID == -1)
                {
                    // 添加的新用户
                    m_listAddedUser.Add(user);
                }
                else
                {
                    m_listUpdatedUser.Add(user);
                }
            }
            m_listEditedRows.Clear();   //清空此次记录
        }
Exemplo n.º 3
0
        // 添加新列
        public void AddNewRow(CEntityUser entity)
        {
            // 记录超过1000条,或者时间超过1分钟,就将当前的数据写入数据库
            m_mutexDataTable.WaitOne(); //等待互斥量
            DataRow row = m_tableDataAdded.NewRow();

            row[CN_UserName]      = entity.UserName;
            row[CN_Password]      = entity.Password;
            row[CN_Administrator] = entity.Administrator;
            m_tableDataAdded.Rows.Add(row);
            if (m_tableDataAdded.Rows.Count >= CDBParams.GetInstance().AddBufferMax)
            {
                // 如果超过最大值,写入数据库
                Task task = new Task(() => { AddDataToDB(); });
                task.Start();
            }
            else
            {
                // 没有超过缓存最大值,开启定时器进行检测,多次调用Start()会导致重新计数
                m_addTimer.Start();
            }
            m_mutexDataTable.ReleaseMutex();
        }