public static void queryOptionalObject(String sqlQuery, queryTypes qt = queryTypes.NON_RETURNING_QUERY) { using (SqlConnection connection = new SqlConnection(getConnectionString())) { connection.Open(); command = new SqlCommand(sqlQuery, connection); qt.DoStuff(); command.Dispose(); } }
public static void DoStuff(this queryTypes q) { switch (q) { case queryTypes.JUST_DO_STUFF: { BDManager.command.ExecuteNonQuery(); break; } case queryTypes.NON_RETURNING_QUERY: { foreach (PropertyInfo p in getPropertiesFromObj()) { BDManager.command.Parameters.AddWithValue("@" + p.Name, p.GetValue(BDManager.myObj) ?? DBNull.Value); // ?? para que null no de error } BDManager.command.ExecuteNonQuery(); break; } case queryTypes.INSERTING_QUERY: { foreach (PropertyInfo p in getPropertiesFromObj()) { BDManager.command.Parameters.AddWithValue("@" + p.Name, p.GetValue(BDManager.myObj) ?? DBNull.Value); // ?? para que null no de error } BDManager.idInsertado = BDManager.command.ExecuteScalar().ToString(); break; } case queryTypes.SINGLE_RETURNING_QUERY: { SqlDataReader reader = BDManager.command.ExecuteReader(); if (reader.Read()) { foreach (PropertyInfo p in getPropertiesFromObj()) { p.SetValue(BDManager.myObj, (reader[p.Name] == DBNull.Value ? default(string) : reader[p.Name].ToString())); } foreach (PropertyInfo p in getIdFromObj()) { p.SetValue(BDManager.myObj, (reader[p.Name] == DBNull.Value ? default(string) : reader[p.Name].ToString())); } // en el caso del insert es necesario otorgar el id al objeto } reader.Close(); break; } case queryTypes.MULTIPLE_RETURNING_QUERY: { BDManager.listaObjetosRetornados = new List <object>(); SqlDataReader reader = BDManager.command.ExecuteReader(); while (reader.Read()) { propsFromObj propGetter = new propsFromObj(); object instance = Activator.CreateInstance(BDManager.dummyType); foreach (PropertyInfo p in propGetter.getPropertiesFromObj(instance)) { p.SetValue(instance, (reader[p.Name] == DBNull.Value ? default(string) : reader[p.Name].ToString())); } foreach (PropertyInfo p in propGetter.getIdFromObj(instance)) { p.SetValue(instance, (reader[p.Name] == DBNull.Value ? default(string) : reader[p.Name].ToString())); } BDManager.listaObjetosRetornados.Add(instance); } reader.Close(); break; } case queryTypes.COUNT: { BDManager.returnDummy = (Int32)BDManager.command.ExecuteScalar(); break; } } }