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