Исключение недопустимой операции консольного приложения 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();
}
}
}


Соединение SQL вызвало недопустимое исключение операции.




"Недопустимая Операция. Соединение закрыто".




Это мой полный код. В другой программе это работает идеально.

Это второй раз, который не работает. Я работаю с VS2005...может быть, моя программа повреждена?



Stacktrace:




В Системе.Данные.В sqlclient.Объект sqlconnection.GetOpenConnection ()

около
Система.Данные.В sqlclient.Объект sqlconnection.get_ServerVersion ()


645   5  

5 ответов:

Правильный способ сделать это должно быть что-то вроде:

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();   
      }
    }


}

С помощью Using Statement он автоматически удалит ваше SQL-соединение.

Проверьте это также: рекомендации по использованию ADO.NET на MSDN

Другие действия: Используйте SQL Management Studio и попробуйте использовать учетные данные для входа в систему проверки подлинности sql из строки подключения, и если вы успешно подключились к базе данных с помощью этой учетной записи, приведенный выше код должен работать для вас.

Лучший С уважением

Попробуйте добавить этот код. У вас, вероятно, есть открытое соединение, и во время повторного запуска программы вы пытаетесь снова открыть соединение или у вас есть проблема с сервером или вашей строкой соединения

con.Close();

Смотрите там для получения дополнительной информации http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.open.aspx

Вы можете проверить Состояние соединения, прежде чем открыть его:

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

// here your code goes for sql operations

con.Close();

Попробуйте использовать операторы using. Прямое ручное Открытие и закрытие баз данных в случае больших баз данных-плохая идея.

using(SqlConnection con = new SqlConnection(connectionString))

Попробуйте сделать это для открытых и закрытых соединений> >

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


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

} 

Надежда Полезна.

Код должен гласить

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

    ...
}

Comments

    Ничего не найдено.