none
Probar/testear conexion a BD SQL Server RRS feed

  • Pregunta

  • Buenas a todos, tengo un codigo para conectar a una BD SQL Server 2008. desde C# y no conecta, para saber si es asi le hice un boton el cual supuestamente testea la conexion. pero nose que falla o la comprobacion o la conexion, creo que es la conexion porque siempre salta el message.box "no conecto"

    private void button4_Click(object sender, EventArgs e)
            {
                
                string rpta = "";
                //string CN = "Server = mcastro/SQLEXPRESS; Database = Fotografia; Trusted_Connection = True";
                string CN = "Server=172.16.220.114;Database=Fotografia;User Id=sa;Password=mati;";
                SqlConnection sqlcon = new SqlConnection();
    
                try
                {
                    sqlcon.ConnectionString = CN;
                    sqlcon.Open();
                }
    
                catch (Exception ex)
                {
                    rpta = ex.Message;
                }
                
               if (sqlcon.State == ConnectionState.Open)
                    MessageBox.Show ("ok"); 
               else
                   MessageBox.Show( "no se conecto") ;
             }

    siempre sale la leyenda no conecto y probe con las 2 stringsConnections que salen ahi. 

    y en mi sql server tengo configurado para entrar de las dos formas, autenticacion de windows y de sql... 

    Gracias

    viernes, 19 de julio de 2013 16:40

Respuestas

  • De todas formas quita en principio el mensaje

    MessageBox.Show( "no se conecto") ;
    Por

    MessageBox.Show(rpta) ;

    Ya que rpta contiene el mensaje  de  la excepción  que ha producido. Así,nos ayudarlas a ayudarte. Que mensaje devuelve?


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    domingo, 21 de julio de 2013 23:55
    Moderador
  • Y por favor puedes revisat

    How to: Configure Express to accept remote connections


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    domingo, 21 de julio de 2013 23:58
    Moderador
  • hola

    que distribucion de sql server estas utilizando ? es una version Express

    la db esta local en la misma pc donde desarrollas ?

    porque si es asi recuerda que se debe utilizar

    string CN = "Server=.\SQLEXPRESS;Database=Fotografia;User Id=sa;Password=mati;";

    ---

    veo que alli pones una ip, pero esta de que pc se trata ? es la misma pc local, porque si es asi se usa localhost o . (punto)

    si es una pc remota y se trata de sql express usarias Server=172.16.220.114\SQLEXPRESS

    ----

    podrias probar conectarte con el SQL Server Management Studio para ver que datos proporcionas o sino con el Server Explorer del VS

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 20 de julio de 2013 0:07

Todas las respuestas

  • Hola

    Lo puedes hacer de la siguiente manera, creas un archivo app.config

    <configuration>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
        </startup>
      <connectionStrings>
        <add name="default" connectionString="Data Source=.;Initial Catalog=TuDB;Persist Security Info=True;User ID=sa;Password=xxxx"/>
      </connectionStrings>
    </configuration>

    Clase conexión

     public class Conexion
        {
            public static SqlConnection Conectar(string conString)
            {
    
                string conn = ConfigurationManager.ConnectionStrings["default"].ConnectionString;
                SqlConnection cn = new SqlConnection(conn);
                return cn;
    
            }
        }

    Formulario

    private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    using (SqlConnection cn = Conexion.Conectar("default"))
                    {
                       cn.Open();
                    }
                    MessageBox.Show("Conexión exitosa", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (SqlException)
                {
    
                    MessageBox.Show("Error de conexión", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                
            }



    Espero te sirva.

    Saludos!!!


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú


    • Editado Pedro Ávila viernes, 19 de julio de 2013 21:38 xxxxxxxxxxxxx
    viernes, 19 de julio de 2013 21:23
  • Revisa el de nuevo el comentario que hice, tenía un error ya corregí.

    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    viernes, 19 de julio de 2013 21:39
  • hola

    que distribucion de sql server estas utilizando ? es una version Express

    la db esta local en la misma pc donde desarrollas ?

    porque si es asi recuerda que se debe utilizar

    string CN = "Server=.\SQLEXPRESS;Database=Fotografia;User Id=sa;Password=mati;";

    ---

    veo que alli pones una ip, pero esta de que pc se trata ? es la misma pc local, porque si es asi se usa localhost o . (punto)

    si es una pc remota y se trata de sql express usarias Server=172.16.220.114\SQLEXPRESS

    ----

    podrias probar conectarte con el SQL Server Management Studio para ver que datos proporcionas o sino con el Server Explorer del VS

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 20 de julio de 2013 0:07
  • Hola, gracias por las respuestas. 

    Efectivamente leandro es una base sql express 2008. yo estoy haciendo la conexion desde mi maquina, y es ella la que va a tener la BD. PERO, cuando el programa sea ejecutable y este listo, el mismo se va a ejecutar dentro de una red empresarial. 
    Es por eso que tengo que saber ambas formas, para probarlo mientras desarrolle y para que se conecten desde otras PC's dentro de la misma red/dominio. 

    Un Saludo
    domingo, 21 de julio de 2013 21:07
  • De todas formas quita en principio el mensaje

    MessageBox.Show( "no se conecto") ;
    Por

    MessageBox.Show(rpta) ;

    Ya que rpta contiene el mensaje  de  la excepción  que ha producido. Así,nos ayudarlas a ayudarte. Que mensaje devuelve?


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    domingo, 21 de julio de 2013 23:55
    Moderador
  • Y por favor puedes revisat

    How to: Configure Express to accept remote connections


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    domingo, 21 de julio de 2013 23:58
    Moderador
  • hola

    Es por eso que tengo que saber ambas formas, para probarlo mientras desarrolle y para que se conecten desde otras PC's dentro de la misma red/dominio.

    pero si defines la cadena de conexion en un archivo de configuracion esto que planteas ya no importa, porque podras cambiar el connection string de forma dinamica sin tener que volver a compilar la aplicacion

    Archivos de Configuración - Una introducción (1/3)

    esto lo explico en la primer parte del articulo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 22 de julio de 2013 0:43
  • Hola!! Oie me sale un error... y vi que comentaste que tenias un error pero no se donde lo corregiste, me podrias ayudar!!! Por favor es URGENTE :'(

    Mira este es el error: 

    string con = ConfigurationManager.ConnectionStrings["default"].ConnectionString;

      //ERROR: Referencia a objeto no establecida como instancia de un objeto
    SqlConnection cn = new SqlConnection(con);
    return cn;

    viernes, 5 de diciembre de 2014 19:17
  • me sale el mismo error como lo corregiste.

    miércoles, 16 de noviembre de 2016 21:36