none
Clase de Conexion a SQL server en C# RRS feed

  • Pregunta

  • Saludos amigos del foro estoy recien estudiando c#, esta es mi clase de conexion a sql server, al ulimo en la funcion  conex() me esta votando error en conexi y el error es: Error 1 El nombre 'conexi' no existe en el contexto actual, me podran ayudar por favor y gracias.
                                        

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace Facturacion.Configuracion
    {
        class conexion
        {
            //mi conexion:
            SqlConnection con = new SqlConnection("server=RUDOLF\\SQLEXPRESS2012;database=sys_fact_2018_liceo_castro_madriz_1;Trusted_Connection=True;");

            //procedimiento que abre la conexion sqlsever
            public void conectar()
            {
                try
                {
                    con.Open();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
             }

            //procedimiento que cierra la conexion sqlserver
            public void desconectar()
            {
                con.Close();
            }

            //funcion que devuelve la conexion sqlserver
            public void conex()
            {
                conexi = con;
                return conexi;
            }

        }

    }


    sábado, 9 de diciembre de 2017 15:18

Respuestas

  • Considerando el código que adjuntas, yo también estoy de acuerdo con el mensaje de la excepción, la variable 'conexi' no es visible en el contexto actual, no la puedo ver, el compilador tampoco, ¿dónde es que declaras la variable?

    Por otro lado, la verdad es que al día de hoy no encuentro ventaja de escribir los métodos: 'conectar()', 'desconectar()' y demás variantes. Cede, a la instrucción using, la gestión del ámbito para la instancia de la clase SqlConnection, la clase 'Conexion' debería contener un miembro, llámese propiedad o método, que retorne la cadena de conexión, no requieres de mas.

    using (SqlConnection cn = new SqlConnection(Conexion.CadenaConexion))
    {
    	cn.Open();
    	//Ejecutar consulta
    } //El contexto de la instrucción using administrará también el cierre de la conexión

    Considera escribir la cadena de conexión en el archivo de configuración App.config y acceder a ella mediante el espacio de nombres System.Configuration.

    • Marcado como respuesta Rudolf Heiner sábado, 9 de diciembre de 2017 16:32
    sábado, 9 de diciembre de 2017 15:48
  • Remedio sencillo: Cambia esto:

           public void conex()
            {
                conexi = con;
                return conexi;
            }

    por esto:

            public SqlConnection conex()
            {
                SqlConnection conexi = con;
                return conexi;
            }

    o por esto:

            public SqlConnection conex()
            {
                return con;
            }

    O elimina por completo el método conex() y haz public la variable con (preferiblemente después de convertirla en propiedad).

    Pero dicho lo anterior, estoy de acuerdo con Williams, es preferible que prescindas por completo de esta clase y que gestiones las conexiones directamente con using en el lugar donde vayas a utilizarlas.


    sábado, 9 de diciembre de 2017 16:16

Todas las respuestas

  • Considerando el código que adjuntas, yo también estoy de acuerdo con el mensaje de la excepción, la variable 'conexi' no es visible en el contexto actual, no la puedo ver, el compilador tampoco, ¿dónde es que declaras la variable?

    Por otro lado, la verdad es que al día de hoy no encuentro ventaja de escribir los métodos: 'conectar()', 'desconectar()' y demás variantes. Cede, a la instrucción using, la gestión del ámbito para la instancia de la clase SqlConnection, la clase 'Conexion' debería contener un miembro, llámese propiedad o método, que retorne la cadena de conexión, no requieres de mas.

    using (SqlConnection cn = new SqlConnection(Conexion.CadenaConexion))
    {
    	cn.Open();
    	//Ejecutar consulta
    } //El contexto de la instrucción using administrará también el cierre de la conexión

    Considera escribir la cadena de conexión en el archivo de configuración App.config y acceder a ella mediante el espacio de nombres System.Configuration.

    • Marcado como respuesta Rudolf Heiner sábado, 9 de diciembre de 2017 16:32
    sábado, 9 de diciembre de 2017 15:48
  • Remedio sencillo: Cambia esto:

           public void conex()
            {
                conexi = con;
                return conexi;
            }

    por esto:

            public SqlConnection conex()
            {
                SqlConnection conexi = con;
                return conexi;
            }

    o por esto:

            public SqlConnection conex()
            {
                return con;
            }

    O elimina por completo el método conex() y haz public la variable con (preferiblemente después de convertirla en propiedad).

    Pero dicho lo anterior, estoy de acuerdo con Williams, es preferible que prescindas por completo de esta clase y que gestiones las conexiones directamente con using en el lugar donde vayas a utilizarlas.


    sábado, 9 de diciembre de 2017 16:16
  • Gracias Alberto!!!
    sábado, 9 de diciembre de 2017 16:33
  • Gracias Willams!!!
    sábado, 9 de diciembre de 2017 16:33
  • private void MostrarDatos()
            {
                try
                {
                    String sql = "Initial Catalog=BD_MEDIKA;Data Source=.;uid =sa; pwd =123";
                    SqlConnection cnx = new SqlConnection(sql);
                    cnx.Open();
                    MessageBox.Show("Conexion Activa");
                }
                catch (Exception e1)
                {
                    MessageBox.Show("Error al conectar con la Base de Datos",e1.Message);
                    Close();
                }
            }

            private void Empleados_Lista_Load(object sender, EventArgs e)

            {
                MostrarDatos();
            }

    jueves, 7 de noviembre de 2019 4:27
  • yo vi este video y me funcionó perfectamente, quizas te sirva ! Saludos https://www.youtube.com/watch?v=ZuHTkTDxNI0&t=1433s
    miércoles, 11 de noviembre de 2020 3:40
  • Vi este video y me funcionó y me permitió descargar el proyecto , se los comparto! https://www.youtube.com/watch?v=ZuHTkTDxNI0&t=1377s
    martes, 22 de diciembre de 2020 0:34