public LiveDataList QueryLiveData(string cls) { Action ThrowException = () => { throw new DatabaseException(String.Format("Query live data fail by class = {0}", cls)); }; try { liveDataCommand.Prepare(); liveDataCommand.Parameters[0].Value = EncryptLang; liveDataCommand.Parameters[1].Value = Encrypt(cls); using (var reader = liveDataCommand.ExecuteReader()) { LiveDataList list = new LiveDataList(); while (reader.Read()) { LiveDataItem item = new LiveDataItem(); item.ShortName = DBCrypto.DecryptToString(reader.GetFieldValue<byte[]>(0)); item.Content = DBCrypto.DecryptToString(reader.GetFieldValue<byte[]>(1)); item.Unit = reader.IsDBNull(2) ? "" : DBCrypto.DecryptToString(reader.GetFieldValue<byte[]>(2)); item.DefaultValue = reader.IsDBNull(3) ? "" : DBCrypto.DecryptToString(reader.GetFieldValue<byte[]>(3)); if (!reader.IsDBNull(4) && !reader.IsDBNull(5)) { item.CmdName = DBCrypto.DecryptToString(reader.GetFieldValue<byte[]>(4)); item.CmdClass = DBCrypto.DecryptToString(reader.GetFieldValue<byte[]>(5)); item.Command = QueryCommand(item.CmdName, item.CmdClass); } item.Description = reader.IsDBNull(6) ? "" : DBCrypto.DecryptToString(reader.GetFieldValue<byte[]>(6)); byte[] indexArray = DBCrypto.DecryptToBytes(reader.GetFieldValue<byte[]>(7)); int index = ((indexArray[3] & 0xFF) << 24) + ((indexArray[2] & 0xFF) << 16) + ((indexArray[1] & 0xFF) << 8) + (indexArray[0] & 0xFF); item.IndexForSort = index; list.Add(item); } return list; } } catch { ThrowException(); } ThrowException(); return null; }
protected static void CheckOutOfRange(double value, LiveDataItem ld) { try { double min = Convert.ToDouble(ld.MinValue); double max = Convert.ToDouble(ld.MaxValue); if (value < min || value > max) ld.IsOutOfRange = true; else ld.IsOutOfRange = false; } catch { } }