Pregunta Excepción de operación no válida de la aplicación C #


using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Sql;
using System.Data.SqlClient;

namespace BissUpdater
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectionString = "Data Source=H....; 
                Initial Catalog=LANDesk; Persist Security Info=True; 
                User ID=Mainstc; Password=xxxxxxxx";

            SqlConnection con = new SqlConnection(connectionString);
            con.Open();
        }
    }
}

La conexión SQL lanzó una excepción de operación no válida.

"Operación inválida. La conexión esta cerrada".

Este es mi código completo. En otro programa, funciona perfecto.

Esa es la segunda vez, que no funciona. Estoy trabajando con VS2005 ... ¿tal vez mi programa está dañado?

Stacktrace:

en System.Data.SqlClient.SqlConnection.GetOpenConnection ()
  a   System.Data.SqlClient.SqlConnection.get_ServerVersion ()


5
2018-03-22 08:57


origen


Respuestas:


La forma correcta de hacerlo debería ser algo como:

static void Main(string[] args) {
    string connectionString = "Data Source=H....; 
    Initial Catalog=LANDesk;User ID=Mainstc; Password=xxxxxxxx"; 
    // removed Persist Security Info=True; 


    using(SqlConnection con = new SqlConnection(connectionString))
    {
      if (con.State==ConnectionState.Closed)
      {                      
          con.Open();   
      }
    }


}

Utilizando Using Statement automáticamente eliminará su conexión SQL.

Verifique esto también: Mejores prácticas para usar ADO.NET en MSDN

Otras cosas que hacer: Use SQL Management Studio e intente usar su credencial de inicio de sesión de autenticación SQL de su cadena de conexión y si se ha conectado con éxito a su base de datos usando esa cuenta, el código anterior debería funcionar para usted.

Atentamente


12
2018-03-22 09:03



Intenta añadir este código. Probablemente tenga una conexión abierta y, mientras vuelve a ejecutar el programa, intente abrir nuevamente la conexión o tendrá un problema con el servidor o su cadena de conexión

con.Close();

Ver allí para más información http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.open.aspx


0
2018-03-22 09:02



Puedes comprobar estado de conexión antes de abrir ittry esto:

SqlConnection con = new SqlConnection(connectionString);
if (con.State==ConnectionState.Closed)
{                      
    con.Open();   
}

// here your code goes for sql operations

con.Close();

0
2018-03-22 09:03



Tratar de usar using declaraciones. La apertura y cierre manual de bases de datos en caso de grandes bases de datos es una mala idea.

using(SqlConnection con = new SqlConnection(connectionString))

Trate de hacer esto para abrir y cerrar conexiones >>

public DB(string conStr):base()
{
con = new OracleConnection(conStr);
con.Open();
}


public void Close()
{
con.Close();
//con.Dispose();

} 

Espero útil.


0
2018-03-22 09:03



El código debe leer

using (SqlConnection con = new SqlConnection(connectionString))
{
    con.Open();

    ...
}

0
2018-03-22 09:03