Как используется usign (Мискльконнектион) C#?

Привет я хочу узнать правильный способ помогать using (MySqlConnection cn = new MySqlConnection()
Предполагается, что, создав связь внутри этого using закончив выполнять то, что внутри блока, он освободит ресурсы, использованные в моем случае разъединять меня моего сервера, мои вопросы: Пойди внутри класса?
Как я получаю данные о моей консультации? Спасибо

3
задан 28.11.2016, 22:06
3 ответа

using имеет как propГіsito освобождать ресурсы, использованные в Ваш declaraciГіn.

using (MySqlConnection cn = new MySqlConnection())
    //abrir conexion
    cn.Open();
    //lógica de programación  encargada de realizar la consulta.
}

ты Можешь осуществлять их следующего способа:

Считает, что у тебя есть относительная таблица названные Prueba_Usuario.

introducir la descripción de la imagen aquí

Считает, что у тебя есть следующая Организация (Класс, где ты будешь хранить данные)

public class Usuario
{
    public Usuario()
    {    
    }
    public String Nombre { get; set; }

    public String ApellidoPaterno { get; set; }

    public String ApellidoMaterno { get; set; }
}

, ты Можешь осуществлять твой Using из следующей формы, используя один patrГіn названный Датирует Аксессс Обхект (DAO) .

public class DaoUsuario
{
  //Almacenamos temporalmente la cadena de conexión
  private string CadenaConexion;

  public  DaoUsuario(string cadenaConexion)
  {
    this.CadenaConexion = cadenaConexion;
  }
  public IEnumerable<Usuario> ConsultarUsuariosPorNombre(string nombre)
  {
    List<Usuario> ListaUsuarios = new List<Usuario>(); //Creamos una lista para agregar acada usuario que leemos de base de datos
    using (MySqlConnection conexion = new MySqlConnection(CadenaConexion)) //configuramos la conexión
    {
      try
      {
        //iniciamos la conexion a la base de datos
        conexion.Open();
        MySqlCommand comando = conexion.CreateCommand();
        //configuramos el comando
        comando.CommandType = CommandType.Text; //Indicamos que el comando será una setencia de texto.
        //Considerando que tenemos unta tabla llamada Prueba_Usuario
        comando.CommandText = string.Format(" SELECT nombre, apellidoPaterno, apellidoMaterno FROM Pueba_Usuario where nombre =@parametroNombre");

        comando.Parameters.Add(new MySqlParameter("@parametroNombre",nombre)); //le indicamos que remplace @parametroNombre con el valor de nombre

        MySqlDataReader resultado = comando.ExecuteReader(); //Ejecutamos el comando para decirle que nos triga la información de nombre,apellidoPaterno y apellidoMaterno
        //Leeremos cada renglos de la tabla mientras existan datos en ella
        while (resultado.Read())
        {
          Usuario actual = new Usuario();

          actual.Nombre = (string)resultado["nombre"]; //le indicamos el tipo de datos que debe ser con (string)
          actual.ApellidoPaterno = (string)resultado["apellidoPaterno"];
          actual.ApellidoMaterno = (string)resultado["apellidoMaterno"];
          //agregamos el usuario a a lista de usuarios.
          ListaUsuarios.Add(actual);
        }
      }
      catch (Exception)
      {

      throw;
      }
    }
    return ListaUsuarios;
  }
  public IEnumerable<Usuario> ConsultarUsuarios()
  {
    List<Usuario> ListaUsuarios = new List<Usuario>(); //Creamos una lista para agregar acada usuario que leemos de base de datos
    using (MySqlConnection conexion = new MySqlConnection(CadenaConexion)) //configuramos la conexión
    {
      //iniciamos la conexion a la base de datos
      conexion.Open();
      MySqlCommand comando = conexion.CreateCommand();
      //configuramos el comando
      comando.CommandType = CommandType.Text; //Indicamos que el comando será una setencia de texto.
      //Considerando que tenemos unta tabla llamada Prueba_Usuario
      comando.CommandText = string.Format(" SELECT nombre, apellidoPaterno, apellidoMaterno FROM Pueba_Usuario");
      MySqlDataReader resultado = comando.ExecuteReader(); //Ejecutamos el comando para decirle que nos triga la información de nombre,apellidoPaterno y apellidoMaterno
      //Leeremos cada renglos de la tabla mientras existan datos en ella
      while (resultado.Read())
      {
        Usuario actual = new Usuario();

        actual.Nombre = (string)resultado["nombre"] ; //le indicamos el tipo de datos que debe ser con (string)
        actual.ApellidoPaterno = (string)resultado["apellidoPaterno"];
        actual.ApellidoMaterno = (string)resultado["apellidoMaterno"];
        //agregamos el usuario a a lista de usuarios.
        ListaUsuarios.Add(actual);
      }
    }
    return ListaUsuarios;
  }
}

... и ты это можешь instanciar следующего способа:

DaoUsuario dao = new DaoUsuario("CadenaConexion");
IEnumerable<Usuario> usuarios = dao.ConsultarUsuarios()   ;
IEnumerable<Usuario> usuarioPorNombre = dao.ConsultarUsuariosPorNombre("nombrePrueba");
2
ответ дан 24.11.2019, 12:20
  • 1
    Спасибо очень полная твой ответ –  WilsonGtZ 29.11.2016, 00:00
  • 2
    Пожалуйста считай, что DAO очень bá sico и хотя возможно улучшаться, чтобы это делать gené богатый, этот пример может помогать тебе в твоем обучении этого patró n diseñ или. Привет. –  Mauricio 29.11.2016, 00:12

Это пример, как использование этого:

public static void Create(Cliente entity)
{
    using (var cn = new MySqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()) )
    {
        cn.Open();
        using (var cmd = cn.CreateCommand())
        {
            cmd.CommandText =
                "INSERT INTO Clientes(RazonSocial, DocumentoIdentidad, NumeroDocumento, Direccion, Telefono)" +
                " VALUES(?RazonSocial, ?DocumentoIdentidad, ?NumeroDocumento, ?Direccion, ?Telefono)";

            cmd.Parameters.AddWithValue("?RazonSocial", entity.RazonSocial);
            cmd.Parameters.AddWithValue("?DocumentoIdentidad", entity.DocumentoIdentidad);
            cmd.Parameters.AddWithValue("?NumeroDocumento", entity.NumeroDocumento);
            cmd.Parameters.AddWithValue("?Direccion", entity.Direccion);
            cmd.Parameters.AddWithValue("?Telefono", entity.Telefono);
            cmd.ExecuteNonQuery();
        }       
    }
 }

Отвечая на твой вопрос:

, заключив ее declaraciГіn объекта Connection между блоком Using... End Using, мы будем убеждаться закрытия ее conexiГіn и разрушения ресурсов, использованных объектом, закончив вышеупомянутый блок (когда выполнят End Using). С Г©sto мы не должны быть незаконченными называния в mГ©todo Close (чтобы закрывать ее conexiГіn), ни также в mГ©todo Dispose (чтобы разрушать объект), следовательно, не необходим располагать внешней процедурой для таких занятий.

ВїSi идет внутри класса? , Если ты можешь помещать это внутри класса, чтобы не иметь перемешанный cГіdigo. Он рекомендуемый работать в слоях: PresenaciГіn, LГіgica, Настойчивость, Организации. У каждого слоя есть ответственность.

  • PresentaciГіn: берется за то, чтобы работать с пользователем
  • LГіgica: берется названный в mГ©todos и она lГіgica дела
  • Настойчивость: Сохраняться против базы данных
  • Организаций: Mapeo по отношению к данным

Каждый слой имеет ответственность и они не могут быть загрязненными ответственностью других слоев.

5
ответ дан 24.11.2019, 12:20

Отвечая на твой вопрос, каждый блок кода должен будет быть выполненным внутри класса.

В этом случае, использовав using (MySqlConnection cn = new MySqlConnection() ты не будешь должен закрывать наладь связи вручную, так как класс MySqlConnection получи в наследство IDisposable, что, закончив блок using связь закрывается в автоматическом.

В других словах using служи для того, чтобы определить, что блок кода будет выполнен и серия ресурсов будет присоединена с контекстом específicado, справедливо, как это это могли бы быть связи на основе данных. Это одна из лучших практик использовать контекст using благодаря тому, что, если тип, который используется в контексте, получает в наследство интерфейса IDisposable, объект освобожден от памяти, закончив блок кода using не будучи должен располагать ресурсами вручную.

Это код примера для того, чтобы ты смог манипулировать результатами:

using (var conn = new MySqlConnection(connectionString))
{
    using (var cmd = new MySqlCommand())
    {
        cmd.Connection = conn;
        cmd.CommandText = "SELECT Columna1, Columna2 FROM [Table]";
        conn.Open();
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                try
                {
                    //Manejo de los resultados
                    //string variable1 = reaader["Columna1"].ToString();
                    //string variable2 = reaader["Columna2"].ToString();
                }
                catch (Exception ex) {
                    //Manejo de la excepción
                }
            }
        }
    }
}
2
ответ дан 24.11.2019, 12:20

Теги

Похожие вопросы