public long Count(MySqlConnection connection) { lock (DatabaseManager.SyncRoot) { using (MySqlCommand cmd = new MySqlCommand(string.Format(TableConverter.GetOperation(DatabaseOperation.COUNT), TableName), connection)) { return((long)cmd.ExecuteScalar()); } } }
private void DeleteElements(IEnumerable <IRecord> elements) { foreach (var element in elements) { var commandString = string.Format(TableConverter.GetOperation(DatabaseOperation.REMOVE), TableName, PrimaryProperty.Name, PrimaryProperty.GetValue(element)); using (var command = new MySqlCommand(commandString, ServiceLocator.Provider.GetService <IDatabaseManager>().UseConnection())) { command.ExecuteNonQuery(); } } }
private void UpdateElements(IRecord[] elements) { if (HasNoUpdateProperties) { throw new Exception("Unable to update elements. " + TableName + " has no update property."); } var command = new MySqlCommand(string.Empty, ServiceLocator.Provider.GetService <IDatabaseManager>().UseConnection()); List <string> final = new List <string>(); for (int i = 0; i < elements.Length; i++) { StringBuilder sb = new StringBuilder(); foreach (var property in UpdateProperties) { sb.Append(string.Format("{2} = ?{0}{1},", property.Name, i, property.Name)); MySqlParameter mySQLParam = new MySqlParameter("?" + property.Name + i, ConvertObject(property, elements[i])); command.Parameters.Add(mySQLParam); } sb = sb.Remove(sb.Length - 1, 1); final.Add(sb.ToString()); var finalText = string.Format("{0}", string.Join(",", final)); string arg1 = TableName; string arg2 = finalText; command.CommandText = string.Format(TableConverter.GetOperation(DatabaseOperation.UPDATE), arg1, arg2, PrimaryProperty.Name, elements[i].Id.ToString()); try { command.ExecuteNonQuery(); } catch (Exception ex) { throw new Exception("Unable update database element (" + TableName + ") " + ex.Message); } } }
public IRecord ReadFirst(MySqlConnection connection, string where) { DatabaseManager.SyncRoot.EnterReadLock(); using var command = new MySqlCommand(string.Format(TableConverter.GetOperation(DatabaseOperation.SELECT_WHERE), TableName, where), connection); try { this.m_reader = command.ExecuteReader(); if (!m_reader.HasRows) { return(null); } var obj = new object[this.Properties.Length]; if (m_reader.Read()) { for (var i = 0; i < this.Properties.Length; i++) { obj[i] = ConvertObject(this.m_reader[i], Properties[i]); } } var data = (IRecord)Activator.CreateInstance(Type); // expressions? for (int i = 0; i < Properties.Length; i++) { Properties[i].SetValue(data, obj[i]); } ServiceLocator.Provider.GetService <IDatabaseManager>().UseConnection().Close(); return(data); } catch (Exception ex) { ServiceLocator.Provider.GetService <ILogger>().LogWarning("Unable to read table " + TableName + " " + ex.Message); this.m_reader?.Close(); return(null); } finally { DatabaseManager.SyncRoot.ExitReadLock(); } }
private void AddElements(IRecord[] elements) { var command = new MySqlCommand(string.Empty, ServiceLocator.Provider.GetService <IDatabaseManager>().UseConnection()); List <string> final = new List <string>(); for (int i = 0; i < elements.Length; i++) { StringBuilder sb = new StringBuilder(); sb.Append("("); foreach (var property in AddProperties) { sb.Append(string.Format("?{0}{1},", property.Name, i)); MySqlParameter mySQLParam = new MySqlParameter("?" + property.Name + i, ConvertObject(property, elements[i])); command.Parameters.Add(mySQLParam); } sb = sb.Remove(sb.Length - 1, 1); sb.Append(")"); final.Add(sb.ToString()); } command.CommandText = string.Format(TableConverter.GetOperation(DatabaseOperation.INSERT), TableName, string.Format("{0}", string.Join(",", final))); try { command.ExecuteNonQuery(); } catch (Exception ex) { throw new Exception("Unable to add element to database (" + TableName + ") " + ex.Message); } }
public static IList Read(Type type, string condition) { DatabaseReader reader = new DatabaseReader(type); reader.ReadTable(ServiceLocator.Provider.GetService <IDatabaseManager>().UseConnection(), string.Format(TableConverter.GetOperation(DatabaseOperation.SELECT), reader.TableName, condition)); return(reader.Elements); }
public void Read(MySqlConnection connection, string condition) { this.ReadTable(connection, string.Format(TableConverter.GetOperation(DatabaseOperation.SELECT), TableName, condition)); }