/// <summary> /// Constructor to initialise a new generator, supplying a specific /// table name and starting seed value /// </summary> /// <param name="settingName">The database setting name that /// stores the number</param> /// <param name="tableName">The database table name that /// stores the number</param> /// <param name="seedValue">The seed value to begin incrementing /// from</param> /// <param name="settingNameFieldName"></param> /// <param name="settingValueFieldName"></param> public DatabaseNumberGenerator(string settingName, string tableName, int seedValue, string settingNameFieldName, string settingValueFieldName) { var statement = new SqlStatement(DatabaseConnection.CurrentConnection, string.Format("select {0} from ", settingValueFieldName) + tableName + string.Format(" where {0} = ", settingNameFieldName)); statement.AddParameterToStatement(settingName); IDataReader reader = null; var hasNumber = false; var number = 0; try { using (reader = DatabaseConnection.CurrentConnection.LoadDataReader(statement)) { if (reader.Read()) { hasNumber = true; number = Convert.ToInt32(reader.GetValue(0)); } } } finally { if (reader != null && !reader.IsClosed) { reader.Close(); } } if (!hasNumber) { number = seedValue; DatabaseConnection.CurrentConnection.ExecuteRawSql( string.Format("insert into {0} ({1}, {2}) values ('{3}', {4})", tableName, settingNameFieldName, settingValueFieldName, settingName, seedValue)); } _numberUpdater = new NumberUpdate(number, settingName, tableName, settingNameFieldName, settingValueFieldName); }
private void CallNumberUpdate() { NumberUpdate?.Invoke(); }
/// <summary> /// Constructor to initialise a new generator, supplying a specific /// table name and starting seed value /// </summary> /// <param name="settingName">The database setting name that /// stores the number</param> /// <param name="tableName">The database table name that /// stores the number</param> /// <param name="seedValue">The seed value to begin incrementing /// from</param> /// <param name="settingNameFieldName"></param> /// <param name="settingValueFieldName"></param> public DatabaseNumberGenerator(string settingName, string tableName, int seedValue, string settingNameFieldName, string settingValueFieldName) { var statement = new SqlStatement(DatabaseConnection.CurrentConnection, string.Format("select {0} from ", settingValueFieldName) + tableName + string.Format(" where {0} = ", settingNameFieldName)); statement.AddParameterToStatement(settingName); IDataReader reader = null; var hasNumber = false; var number = 0; try { using (reader = DatabaseConnection.CurrentConnection.LoadDataReader(statement)) { if (reader.Read()) { hasNumber = true; number = Convert.ToInt32(reader.GetValue(0)); } } } finally { if (reader != null && !reader.IsClosed) reader.Close(); } if (!hasNumber) { number = seedValue; DatabaseConnection.CurrentConnection.ExecuteRawSql( string.Format("insert into {0} ({1}, {2}) values ('{3}', {4})", tableName, settingNameFieldName, settingValueFieldName, settingName, seedValue)); } _numberUpdater = new NumberUpdate(number, settingName, tableName, settingNameFieldName, settingValueFieldName); }