/// <summary> /// Save Setting /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <param name="value"></param> /// <param name="userCode"></param> /// <param name="name"></param> public void SaveSetting <T>(string key, T value = default(T), string userCode = null, string name = null) { Init(); var sqlKey = key.Trim().ToLowerInvariant(); if (userCode != null) { sqlKey = $"{key}[{userCode}]"; } if (sqlKey.Length > 30) { throw new Exception($"SQL Key '{sqlKey}' for Setting is to long (Max 30, Actual {sqlKey.Length})"); } var sql = $"SELECT [U_{UdfSettingValue}], [Name] FROM [@{UdtSettings}] WHERE [Code] = '{sqlKey}'"; bool exists; using (var query = new SboRecordsetQuery(sql)) { exists = query.Count == 1; } var sqlValue = string.Format(CultureInfo.InvariantCulture, "'{0}'", value); if (value == null) { sqlValue = "NULL"; } if (exists) { sql = $"UPDATE [@{UdtSettings}] SET [U_{UdfSettingValue}] = {sqlValue} WHERE [Code] = '{sqlKey}'"; } else { if (sqlValue.Length > 254) { throw new Exception($"SaveSetting sqlValue '{sqlValue}' value is to long (max 254) "); } if (name == null) { name = sqlKey; } if (name.Length > 30) { name = name.Substring(0, 30); // Max Length is 30 } sql = $"INSERT INTO [@{UdtSettings}] ([Code], [Name], [U_{UdfSettingValue}]) VALUES ('{sqlKey}', '{name}', {sqlValue})"; } SboRecordset.NonQuery(sql); }
/// <summary> /// Save Setting /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <param name="value"></param> /// <param name="userCode"></param> /// <param name="name"></param> public void SaveSetting <T>(string key, T value = default(T), string userCode = null, string name = null) { Init(); var sqlKey = key.Trim().ToLowerInvariant(); if (userCode != null) { sqlKey = $"{key}[{userCode}]"; } if (sqlKey.Length > KeyMaxLength) { throw new Exception($"SQL Key '{sqlKey}' for Setting is to long (Max {KeyMaxLength}, Actual {sqlKey.Length})"); } var sql = FrameworkQueries.Instance.SaveSettingExistsQuery(sqlKey); bool exists; using (var query = new SboRecordsetQuery(sql)) { exists = query.Count == 1; } var sqlValue = string.Format(CultureInfo.InvariantCulture, "'{0}'", value); if (value == null) { sqlValue = "NULL"; } if (exists) { sql = FrameworkQueries.Instance.SaveSettingUpdateQuery(sqlKey, sqlValue); } else { if (sqlValue.Length > ValueMaxLength) { throw new Exception($"SaveSetting sqlValue '{sqlValue}' value is to long (max {ValueMaxLength}) "); } if (name == null) { name = sqlKey; } if (name.Length > KeyMaxLength) { name = name.Substring(0, KeyMaxLength); // Max Length is 50 } sql = FrameworkQueries.Instance.SaveSettingInsertQuery(sqlKey, name, sqlValue); } SboRecordset.NonQuery(sql); }
public static void Init(TestContext textContext) { SboApp.Connect(SboApp.DebugConnectionString); SboRecordset.NonQuery("DELETE FROM [@ITCO_FW_SETTINGS] WHERE [Code] LIKE 'test%'"); }