예제 #1
0
        public List <CEntityStationMap> QueryAll()
        {
            var result  = new List <CEntityStationMap>();
            var sqlConn = CDBManager.GetInstacne().GetConnection();

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

                String sqlStr = GetQuerySQL();

                SqlCommand sqlCmd = new SqlCommand(sqlStr, sqlConn);

                SqlDataReader reader = sqlCmd.ExecuteReader();

                Debug.Assert(reader.FieldCount == CN_FIELD_COUNT, CT_TableName + "表与类" + CT_EntityName + "中定义字段不符合");

                //  处理查询结果
                while (reader.Read())
                {
                    try
                    {
                        var stationMap = new CEntityStationMap();
                        stationMap.StationID = reader[CN_StationID].ToString();
                        stationMap.StationID = reader[CN_StationID].ToString();
                        stationMap.StationID = reader[CN_StationID].ToString();
                        stationMap.StationID = reader[CN_StationID].ToString();
                        result.Add(stationMap);
                    }
                    catch (Exception exp)
                    {
                        Debug.WriteLine(exp.Message);
                    }
                }
            }
            catch (Exception exp)
            {
                throw exp;
            }
            finally
            {
                sqlConn.Close();                    //  关闭数据库连接
                m_mutexDataTable.ReleaseMutex();    //  释放内存表的访问权
                m_mutexWriteToDB.ReleaseMutex();    //  释放数据库的访问权
            }
            return(result);
        }
예제 #2
0
        /// <summary>
        /// 增加一行数据到站点映射表
        /// </summary>
        /// <param name="entity"></param>
        public void AddNewRow(CEntityStationMap entity)
        {
            m_mutexDataTable.WaitOne(); //等待互斥量
            DataRow row = m_tableDataAdded.NewRow();

            row[CN_StationID]    = entity.StationID;
            row[CN_StationIDRef] = entity.StationIDRef;
            row[CN_StationID8]   = entity.StationID8;
            row[CN_StationID10]  = entity.StationID10;
            m_tableDataAdded.Rows.Add(row);

            if (m_tableDataAdded.Rows.Count >= 1)
            {
                // 如果超过最大值,写入数据库
                Task task = new Task(() => { AddDataToDB(); });
                task.Start();
            }
            else
            {
                // 没有超过缓存最大值,开启定时器进行检测,多次调用Start()会导致重新计数
                m_addTimer.Start();
            }
            m_mutexDataTable.ReleaseMutex();
        }