/// <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); }
/// <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(); //清空此次记录 }
// 添加新列 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(); }